爬取某东的华为自营店华为p50的评论
拿到网址:
此时需要了解请求头里面的user-Agent
添加headers语句:
headers语句存在的意义是模拟浏览器发出请求而不是自动程序.(处理反爬)
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (HTML, like Gecko) "
"Chrome/96.0.4664.93 Safari/537.36 "
}
resp = requests.get(url, headers=headers)
如下图
获取到了页面源码后,我们找到评论所在的语句. 标签为<p class="comment-con">
此时我们需要换个思路,是不是这个url不通
将评论的字段复制到搜索内
获得:
copy:https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100024533316&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1
第一页第二页
我们可以得知page表示为页数.
知道了以上我们可以获取我们想要的了
接下来就是提取我们想要的元素
流行的解析方法有很多种,re正则、BeautifulSoup、xpath、pyquery
lst = re.compile(r'","content":"(?P<name>.*?)".*?', re.S)
result = lst.finditer(resp.text)
源代码:
import requests
import re
url ='https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100024533316&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1'
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (HTML, like Gecko) "
"Chrome/96.0.4664.93 Safari/537.36 "
}
resp = requests.get(url, headers=headers)
lst = re.compile(r'","content":"(?P<name>.*?)".*?', re.S)
result = lst.finditer(resp.text)
for it in result:
val = (it.group("name"))
print(val)