本次的目标网站为:
https://www.taptap.com/app/192976/review
首先进去网站可以看到如下界面
进去网站后找到所有评论所在位置你然后点击,点击"F12"以后点击" Netword "以后刷新可以得到如下界面
如上图,不断的将评论往下拉可以看到右边会新加一些请求,就会发现该网站为动态网站,点开这些请求以后,会发现我们所与需要的数据就在 这里:
观察这些网址的参数
下面为第一个网址的参数
app_id: 192976
limit: 10
mainRequest: true
from: 10
X-UA: V=1&PN=WebApp&LANG=zh_CN&VN_CODE=4&VN=0.1.0&LOC=CN&PLT=PC&DS=Android&UID=1c6b57c4-54d9-47ab-bf42-511ffc7e09c3&DT=PC
这下面为第二个网址的参数
app_id: 192976
from: 20
limit: 10
mainRequest: true
X-UA: V=1&PN=WebApp&LANG=zh_CN&VN_CODE=4&VN=0.1.0&LOC=CN&PLT=PC&DS=Android&UID=1c6b57c4-54d9-47ab-bf42-511ffc7e09c3&DT=PC
观察发现这些参数中只有一个参数是在变化的,就是" from "这个参数,没次增加10。
最终就有了具体思路
开始写代码
for i in range(1,200):
a=i*10
url=f"https://www.taptap.com/webapiv2/review/v2/by-app?app_id=192976&from={a}&limit=10&mainRequest=true&X-UA=V%3D1%26PN%3DWebApp%26LANG%3Dzh_CN%26VN_CODE%3D4%26VN%3D0.1.0%26LOC%3DCN%26PLT%3DPC%26DS%3DAndroid%26UID%3D1c6b57c4-54d9-47ab-bf42-511ffc7e09c3%26DT%3DPC"
a=1
resp=requests.get(url).json()
发现都是可以得到,最终就是解析数据最后存储
最终全部代码如下
import requests
import time
import xlwt
def main() : #主函数
for i in range(1,200):
a=i*10
url=f"https://www.taptap.com/webapiv2/review/v2/by-app?app_id=192976&from={a}&limit=10&mainRequest=true&X-UA=V%3D1%26PN%3DWebApp%26LANG%3Dzh_CN%26VN_CODE%3D4%26VN%3D0.1.0%26LOC%3DCN%26PLT%3DPC%26DS%3DAndroid%26UID%3D1c6b57c4-54d9-47ab-bf42-511ffc7e09c3%26DT%3DPC"
a=1
fun(url,i)
lis=[] #存储数据
def fun(url,i) : #请求网页
print(i)
resp=requests.get(url).json()
time.sleep(2)
fun1(resp)
#print(resp["data"]["list"])
def fun1(resp) : #解析数据
#print(resp)
for i in resp["data"]["list"]:
lis1=[] #存储单条数据
lis1.append(i["moment"]["author"]["user"]["name"]) #获取名字
lis1.append(i["moment"]["author"]["user"]["id"])
lis1.append(i["moment"]["extended_entities"]["reviews"][0]["device"]) #获取手机型号
lis1.append(i["moment"]["author"]["user"]["avatar"]) #头像链接
lis1.append(i["moment"]["extended_entities"]["reviews"][0]["contents"]["text"]) #获取评论
print(lis1)
lis.append(lis1)
#fun2(lis)
def fun2(lis) : #保存数据
print("开始存储!")
book = xlwt.Workbook(encoding="utf-8", style_compression=0) # 创建"workbook"对象
sheet = book.add_sheet("游戏数据", cell_overwrite_ok=True) # 创建工作表
col = ["用户网名","用户ID", "用户手机型号", "头像链接", "评论"]
for i in range(0, 4):
sheet.write(0, i, col[i]) # 列名
for i in range(1, len(lis)):
print('已经存储', i - 1, '行数据')
for j in range(0, len(lis[i])):
sheet.write(i, j, lis[i - 1][j])
book.save("游戏数据2.xls")
if __name__ == '__main__':
main()
fun2(lis)
最终得到全部数据:
部分数据如下图
感谢观看!