python爬⾍——爬取taptap游戏的评论信息(通过fiddler抓包)
1. 效果图,只抓取了评论⼈名字,游戏时长和评论内容,另外因为随机延迟,爬取的速度不是很快,有需要的爬友们可以写个多线程进⾏爬取
2. 通过抓包,分析之后我们可以到评论区所在的url,对⽐之后我们可以发现该条url就是我们需要的url
3. 通过对⽐多条url,发现其中的规律,就是from递增10
4. 再分析返回的数据是json格式,通过对字典那样的操作,可以直接获取到我们需要的信息
5. 通过datas= (‘data’).get(‘list’)的datas是否为空来判断是否到底了,到底了咱们就break退出循环
resp = (url, headers=headers).json()
datas= ('data').get('list')
if datas:
for data in datas:
# 评论⼈
name = ('author').get('name')
# 游戏时长图片爬虫app
played_tips = ('played_tips')
# 评论内容
contents = ('contents').get('text')
# 声明⼀个字典储存数据
data_dict = {}
data_dict['name'] = name
data_dict['played_tips'] = played_tips
data_dict['contents'] = place('<br />', '')
data_list.append(data_dict)
print(data_dict)
else:
break
6. 通过page⾃增10来达到翻页的效果,通过random随机函数来实现随机延迟
7. 完整代码附上
import requests
import json
import csv
import time
import time
import random
headers = {
'Host': 'api.taptapdada',
'Connection': 'Keep-Alive',
'Accept-Encoding': 'gzip',
'User-Agent': 'okhttp/3.10.0'
}
# 声明⼀个列表存储字典
data_list = []
def start_spider():
page = 0
while True:
time.sleep(round(random.uniform(0.5, 1.5), 1))
url = 'api.taptapdada/review/v1/by-app?limit=10&app_id=142793' \
'&X-UA=V%3D1%26PN%3DTapTap%26VN_CODE%3D551%26LOC%3DCN%26LANG%3Dzh_CN%26CH%3Dtencent%26' \ 'UID%3Dda4b99bf-5e2b-4204-a92f-235474b32c4c&from={}'.format(page)
page += 10
resp = (url, headers=headers).json()
datas = ('data').get('list')
if datas:
for data in datas:
# 评论⼈
name = ('author').get('name')
# 游戏时长
played_tips = ('played_tips')
# 评论内容
contents = ('contents').get('text')
# 声明⼀个字典储存数据
data_dict = {}
data_dict['name'] = name
data_dict['played_tips'] = played_tips
data_dict['contents'] = place('<br />', '')
data_list.append(data_dict)
print(data_dict)
else:
break
def main():
start_spider()
# 将数据写⼊json⽂件
with open('data_json.json', 'a+', encoding='utf-8-sig') as f:
json.dump(data_list, f, ensure_ascii=False, indent=4)
print('json⽂件写⼊完成')
# 将数据写⼊csv⽂件
with open('data_csv.csv', 'w', encoding='utf-8-sig', newline='') as f:
# 表头
title = data_list[0].keys()
# 创建writer
writer = csv.DictWriter(f, title)
# 写⼊表头
writer.writeheader()
# 批量写⼊数据
writer.writerows(data_list)
print('csv⽂件写⼊完成')
print('csv⽂件写⼊完成') if __name__ == '__main__': main()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论