python爬取京东贵州茅台商品评论数据
时间: 2023-10-06 18:04:18 浏览: 121
好的,以下是爬取京东贵州茅台商品评论数据的示例代码:
```python
import requests
import json
from lxml import etree
# 商品ID
product_id = '100016496848'
# 请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36',
'Referer': f'https://item.jd.com/{product_id}.html',
'Host': 'club.jd.com'
}
# 评论API
url = f'https://club.jd.com/comment/productPageComments.action?productId={product_id}&score=0&sortType=5&page=0&pageSize=10'
# 发起请求
response = requests.get(url, headers=headers)
# 获取评论数
comment_count = json.loads(response.text)['productCommentSummary']['commentCount']
# 获取页数
page_count = (comment_count + 9) // 10
# 爬取评论
comments = []
for page in range(page_count):
url = f'https://club.jd.com/comment/productPageComments.action?productId={product_id}&score=0&sortType=5&page={page}&pageSize=10'
response = requests.get(url, headers=headers)
html = etree.HTML(response.text)
comment_list = html.xpath('//div[@class="comment-item"]')
for comment in comment_list:
content = comment.xpath('.//div[@class="comment-con"]/div/text()')[0]
comments.append(content.strip())
# 打印评论
for comment in comments:
print(comment)
```
代码说明:
1. 首先,我们需要获取商品ID,可以在京东商品页面的URL中找到。例如,商品页面URL为`https://item.jd.com/100016496848.html`,则商品ID为`100016496848`。
2. 我们需要发起请求获取评论数据。评论API的URL为`https://club.jd.com/comment/productPageComments.action`。其中,`productId`参数为商品ID,`score`参数为评分,`sortType`参数为排序方式,`page`参数为页数,`pageSize`参数为每页评论数。
3. 首先,我们需要获取评论总数以及页数,然后循环爬取每一页的评论。
4. 我们使用XPath解析HTML代码,获取每条评论的内容。最后,将评论内容存储到列表中。
5. 最后,打印评论内容。
需要注意的是,由于京东的反爬虫机制比较严格,我们需要设置请求头,模拟浏览器发起请求。同时,为了避免被封IP,我们可以设置延时等策略。
阅读全文