ajax抓取网页内容(如何抓取ajax形式加载的网页数据(一)_恢复内容开始)
优采云 发布时间: 2021-09-16 04:17ajax抓取网页内容(如何抓取ajax形式加载的网页数据(一)_恢复内容开始)
---恢复内容启动---
以下是如何获取以Ajax形式加载的网页数据的记录:
目标:获取“%E5%89%A7%E6%83%85&;type=11&;interval\u id=100:90&;action=“”下的网页数据
步骤1:网页数据分析——特性:当列表栏滚动到页面底部时,数据自动加载,页面的URL不变
步骤2:使用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
---恢复期结束---