寻找数据真实接口
打开京东商品网址查看商品评价。我们点击评论翻页,发现网址未发生变化,说明该网页是动态网页。
API名称:item_review-获得JD商品评论
公共参数
获取API测试key&secret
名称 | 类型 | 必须 | 描述 |
---|---|---|---|
key | String | 是 | 调用key(必须以GET方式拼接在URL中) |
secret | String | 是 | 调用密钥 |
api_name | String | 是 | API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等] |
cache | String | 否 | [yes,no]默认yes,将调用缓存的数据,速度比较快 |
result_type | String | 否 | [json,jsonu,xml,serialize,var_export]返回数据格式,默认为json,jsonu输出的内容中文可以直接阅读 |
lang | String | 否 | [cn,en,ru]翻译语言,默认cn简体中文 |
version | String | 否 | API版本 |
请求参数
请求参数:num_iid=71619129750&page=1
参数说明:item_id:商品ID
page:页数
响应参数
Version: Date:
名称 | 类型 | 必须 | 示例值 | 描述 |
---|---|---|---|---|
items | items[] | 0 | 获得JD商品评论 | |
rate_content | String | 0 | 这个帆布鞋的款式挺不错的,穿着也很百搭,做工很精细。! | 评论内容 |
rate_date | Date | 0 | 2020-07-16 17:04:45 | 评论日期 |
pics | MIX | 0 | ["//img30.360buyimg.com/n0/s128x96_jfs/t1/143538/26/2997/98915/5f10182dE075cf6f4/3893a6ebd54bf20b.jpg"] | 评论图片 |
display_user_nick | String | 0 | j***X | 买家昵称 |
auction_sku | String | 0 | 颜色:白色(加绒);尺码:2XL | 评论商品属性 |
add_feedback | String | 0 | 衣服面料很好 穿起来很舒服 衣服挺合适的! | 追评内容 |
通过循环,爬取所有页面的评论数据
翻页爬取的关键是找到真实地址的“翻页”规律。我们分别点击第1页、第2页、第3页,发现不同页码的除了page参数不一致,其余相同。第1页的“page”是1,第2页的“page”是2,第2页的“page”是2,以此类推。 我们嵌套一个For循环,并通过pandas存储数据。运行代码让其自动爬取其他页面的评论信息,并储存t.xlsx的文件中。 所有代码如下:
import requests
import pandas as pd
items=[]
for i in range(1,20):
header = {'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.1.4031 SLBChan/105'}
url=f'https://api.m.jd.com/?appid=item-v3&functionId=pc_club_productPageComments&client=pc&clientVersion=1.0.0&t=1684832645932&loginType=3&uuid=122270672.2081861737.1683857907.1684829964.1684832583.3&productId=100009464799&score=0&sortType=5&page={i}&pageSize=10&isShadowSku=0&rid=0&fold=1&bbtf=1&shield='
response= requests.get(url=url,headers=header)
json=response.json()
data=json['comments']
for t in data:
content =t['content']
time =t['creationTime']
item=[content,time]
items.append(item)
df = pd.DataFrame(items,columns=['评论内容','发布时间'])
df.to_excel(r'C:\Users\蓝胖子\Desktop\t.xlsx',encoding='utf_8_sig')
最后,得到爬取的数据结果如下: