爬虫抓取网页数据(如何抓取ajax形式加载的网页数据(一)_恢复内容开始)
优采云 发布时间: 2021-11-14 19:03爬虫抓取网页数据(如何抓取ajax形式加载的网页数据(一)_恢复内容开始)
---恢复内容开始---
下面记录如何抓取ajax形式加载的网页数据:
目标:获取“%E5%89%A7%E6%83%85&type=11&interval_id=100:90&action=”下的网页数据
第一步:网页数据分析-----》特点:当列表栏滚动到页面底部时,数据自动加载,页面的url没有变化
第二步:使用Fiddler抓包,如下图:
图 1:请求数据
图2:表格形式
数据规律是通过抓包得到的:图2中from表单中的start对应数据和图1中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":"20",
"limit":"20"
}
#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 库获取请求代码
#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":"20",
"limit":"20",
}
response = requests.get(url,params = data,headers = headers)
print response.text
3).request 库发布请求
#coding=utf-8
import requests
url = ' https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action='
formdata = {
"start":"20",
"limit":"20"
}
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
---恢复内容结束---