---恢复内容开始---

下面记录如何抓取ajax形式加载的网页数据:

目标:获取“https://movie.douban.com/typerank?type_name=%E5%89%A7%E6%83%85&type=11&interval_id=100:90&action=”下的网页数据

第一步:网页数据分析-----》特点:当列表条滚动到页面下方时数据自动加载,而页面的url并未发生变化

第二步:利用Fiddler抓包,如下图:

图一:请求数据

图二:form表单

通过抓包获取到数据规律:图二from表单中start对应数据和图一中的url中start对应数据随着每次加载而递增,其他数据未发生变化。对应这种规律我们便可构造相应请求获取数据

需注意,数据形式为json

代码如下:

1).urllib形式

import urllib2
import urllib
#此处的url为上述抓包获取的url去掉start以及limit,start以及limit数据后边以form表单的形式传入
url = ' https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action='
#请求投信息,伪造成浏览器,方式被反爬虫策略拦截
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0"}
#构建form表单
formdata = {
"start":"",
"limit":""
}
#urlencode()urllib中的函数,作用:将key:value形式的键值对转换为"key=value"形式的字符串
data = urllib.urlencode(formdata)
#构建request实例对象
request = urllib2.Request(url,data=data,headers=headers)
#发送请求并返回响应信息
response = urllib2.urlopen(request)
#注意此处的数据形式并不是html文档,而是json数据
json = response.read()
print html

2).request库的get请求代码

#coding=utf-8

import requests
url = ' https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action='
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0"}
data = {
"start":"",
"limit":"",
}
response = requests.get(url,params = data,headers = headers)
print response.text

3).request库的post请求

#coding=utf-8

import requests
url = ' https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action='
formdata = {
"start":"",
"limit":""
}
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0"}
response = requests.post(url,data=formdata,headers=headers)
print response.text

---恢复内容结束---

最新文章

  1. 简单有效的kmp算法
  2. 分析nuget源码,用nuget + nuget.server实现winform程序的自动更新
  3. Hibernate(五)__hql语句
  4. DateTime , DateTime2 ,DateTimeOffset 之间的小区别
  5. Android Bitmap 全面解析(四)图片处理效果对比 ...
  6. Watering the Fields(irrigation)
  7. [ActionScript 3.0] 根据xml属性查找相应xml节点,递归函数。
  8. centos7 pxe minimal install
  9. vtk点云数据的显示[转]
  10. Linux分类笔记(一)-权限管理
  11. 关于Jquery中ajax方法data参数用法的总结
  12. java 迭代器iterator
  13. cp 提示 overwrite 问题
  14. 可以放在html代码中的自动跳转代码
  15. Java: 隐性赋值(Implicit Assignment)
  16. WPF DataGrid绑定一个组合列
  17. java 集合之实现类ArrayList 和 LinkedList
  18. installation failed with message INSTALL_FAILED_INSUFFICIENT_STORG
  19. zabbix报警逻辑初探
  20. Ubuntu中通过SuperVisor添加守护进程

热门文章

  1. js五种不同的遍历 (filter, map,foreach,every, some,)
  2. Canvas入门04-绘制矩形
  3. 扫描 + 注解完成bean的自动配置
  4. 关于golang的label
  5. 学习C++的意义
  6. SCUT - 483 - 数轴上的点
  7. vuex介绍和vuex数据传输流程
  8. selectTree 改造
  9. Ruby下安装cocoapods
  10. 02 getsockopt