python爬虫抓取京东商品评论
时间: 2025-01-03 15:34:54 浏览: 12
### 实现Python爬虫获取京东商品评论
为了实现这一目标,可以采用`requests`库发送HTTP请求并结合`json`模块解析返回的数据。由于京东的商品评论通常通过AJAX加载,并不是直接嵌入HTML页面中的静态内容,所以需要分析网络请求找出实际的API接口。
对于动态加载的内容,浏览器开发者工具能够帮助定位到具体的URL模式以及所需的参数[^1]。一旦确定了这些细节之后,就可以模拟相同的GET/POST请求来获得所需的信息片段。
下面是一个简单的例子展示怎样构建这样的爬虫:
```python
import requests
from urllib.parse import urlencode
def get_page(page, product_id):
"""
获取指定页数的商品评价列表
参数:
page (int): 页面编号
product_id (str or int): 商品ID
返回:
dict: JSON响应对象
"""
url_base = 'https://club.jd.com/comment/skuProductPageComments.action?'
params = {
'callback': 'fetchJSON_comment98',
'productId': str(product_id),
'score': 0,
'sortType': 5,
'page': page,
'pageSize': 10,
'isShadowSku': 0,
'rid': 0,
'_': ''
}
headers = {'User-Agent': 'Mozilla/5.0'}
try:
response = requests.get(url=url_base + urlencode(params), headers=headers)
if response.status_code == 200:
content = response.text.replace('fetchJSON_comment98(', '')[:-2]
return eval(content)
else:
print(f'Error occurred while fetching data from JD with status code {response.status_code}')
return None
except Exception as e:
print(e)
if __name__ == '__main__':
result = get_page(0, "example_product_id") # 替换为具体的产品ID
comments = []
if isinstance(result, dict) and 'comments' in result.keys():
for item in result['comments']:
comment_info = {}
comment_info["content"] = item["content"]
comment_info["creationTime"] = item["creationTime"]
comment_info["nickname"] = item["nickname"]
comments.append(comment_info)
for cmt in comments[:5]:
print(cmt)
```
此脚本定义了一个名为`get_page()`函数用于向特定端点发起请求,并处理接收到的数据以提取有用的字段如评论正文(`content`)、创建时间(`creationTime`)和用户名(`nickname`)等信息[^2]。
阅读全文