使用Scrapy获取POST请求包中内容
- 只在spider文件中测试输出到Terminal,没有涉及到管道
(items)
和下载器(pipelines)
class Spider(scrarpy.Spider):
... # name、allowed_domians
# 设置爬取延迟时间
custom_settings = {
'DOWNLOAD_DELAY': 0.1, #延迟爬取时间,这个就是设置单个爬虫的 settings
# 'RANDOMIZE_DOWNLOAD_DELAY': True
}
# 设置请求头
hreders = {
'Origin':'xxx',
'Content-Type':'xxx',
'X-Requested-With':'xxx',
'User-Agent':'xxx',
}
# 重写 start_requests(self) 方法
def start_requests(self):
# 获取POST请求包中的 Payload 变量名自定义
pl = {
'填入POST请求包中的request payload'
}
# 循环遍历
for i in pl:
yield scrapy.FormRequest(url='POST请求包链接',
method="POST", body=i,
headers=self.headers,
callback=self.parse,
dont_filter=True)
def parse(self, response):
# 判断POST请求 返回状态码 以及 返回文本内容 是否正常
if response.status == 200 and len(response.text) > 10:
# 测试输出 POST请求返回文本内容
# print(response.text)
# 将文本内容转换成字典格式
# 示例
# rows: [{attachmentsNum: 0, canBid: false, categoryCode: "111", categoryName: "XXX", clickRate: 0,…},…]
content = json.loads(response.text)['rows'] # [Previe中最外层键]
# 遍历获取 字典中rows键 的值
for i in content:
# 获取rows中的嵌套字典value
"""
rows: [{xxx: xxx, xxx: xxx, xxx: "xxx", xxx: "xxx",…},…]
0: {xxx: xx, xxx: xx, xxx: "xx", xxx: "xx",…}
xxx: xx
id: "xxx"
publishTime: "2022-06-24 17:45:27"
title: "xxxx"
"""
title = i['title']
ids = i['id']
times = i['time']
# 测试输出
print(title, ids, times)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/114878.html