爬虫小例1:ajax形式的网页数据的抓取
2024-08-24 20:28:17
---恢复内容开始---
下面记录如何抓取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
---恢复内容结束---
最新文章
- 简单有效的kmp算法
- 分析nuget源码,用nuget + nuget.server实现winform程序的自动更新
- Hibernate(五)__hql语句
- DateTime , DateTime2 ,DateTimeOffset 之间的小区别
- Android Bitmap 全面解析(四)图片处理效果对比 ...
- Watering the Fields(irrigation)
- [ActionScript 3.0] 根据xml属性查找相应xml节点,递归函数。
- centos7 pxe minimal install
- vtk点云数据的显示[转]
- Linux分类笔记(一)-权限管理
- 关于Jquery中ajax方法data参数用法的总结
- java 迭代器iterator
- cp 提示 overwrite 问题
- 可以放在html代码中的自动跳转代码
- Java: 隐性赋值(Implicit Assignment)
- WPF DataGrid绑定一个组合列
- java 集合之实现类ArrayList 和 LinkedList
- installation failed with message INSTALL_FAILED_INSUFFICIENT_STORG
- zabbix报警逻辑初探
- Ubuntu中通过SuperVisor添加守护进程