作者:Yuki_沐1824355667 | 来源:互联网 | 2023-10-12 08:02
篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python爬虫系列-初探:爬取旅游评论相关的知识,希望对你有一定的参考价值。Python爬虫目前是基于reques
篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python爬虫系列 - 初探:爬取旅游评论相关的知识,希望对你有一定的参考价值。
Python爬虫目前是基于requests包,下面是该包的文档,查一些资料还是比较方便。
http://docs.python-requests.org/en/master/
爬取某旅游网站的产品评论,通过分析,获取json文件需要POST指令。简单来说:
- GET是将需要发送的信息直接添加在网址后面发送
- POST方式是发送一个另外的内容到服务器
那么通过POST发送的内容可以大概有三种,即form、json和multipart,目前先介绍前两种
1.content in form
Content-Type: application/x-www-form-urlencoded
将内容放入dict,然后传递给参数data即可。
payload = {‘key1‘: ‘value1‘, ‘key2‘: ‘value2‘}
r = requests.post(url, data=payload)
2. content in json
Content-Type: application/json
将dict转换为json,传递给data参数。
payload = {‘some‘: ‘data‘}
r = requests.post(url, data=json.dumps(payload))
或者将dict传递给json参数。
payload = {‘some‘: ‘data‘}
r = requests.post(url, json=payload)
然后贴一下简单的代码供参考。
import requests
import json
def getCommentStr():
url = r"https://package.com/user/comment/product/queryComments.json"
header = {
‘User-Agent‘: r‘Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0‘,
‘Accept‘: r‘application/json, text/Javascript, */*; q=0.01‘,
‘Accept-Language‘: r‘en-US,en;q=0.5‘,
‘Accept-Encoding‘: r‘gzip, deflate, br‘,
‘Content-Type‘: r‘application/x-www-form-urlencoded; charset=UTF-8‘,
‘X-Requested-With‘: r‘XMLHttpRequest‘,
‘Content-Length‘: ‘65‘,
‘DNT‘: ‘1‘,
‘Connection‘: r‘keep-alive‘,
‘TE‘: r‘Trailers‘
}
params = {
‘pageNo‘: ‘2‘,
‘pageSize‘: ‘10‘,
‘productId‘: ‘2590732030‘,
‘rateStatus‘: ‘ALL‘,
‘type‘: ‘all‘
}
r = requests.post(url, headers = header, data = params)
print(r.text)
getCommentStr()
小技巧
- 对于COOKIEs,感觉可以用浏览器的编辑功能,逐步删除每次发送的COOKIEs信息,判断哪些是没有用的?
- 对于测试代码阶段,我还是比较习惯于将爬取的数据存为str,也算是为了服务器减负吧。