首先简明,爬取 商品数据 采用selenium操作chrome模拟浏览器动态渲染页面+ajax加载评论
具体的看下面的说明
所需内容:
商品小分类名称(苹果,橙子等)
商品名称(烟台红富士苹果 5kg 一级铂金大果 单果230-320g 新鲜水果)
商品总评论数量
商品好评率
评论星级
评论长度
评论点赞数量
评论回复数量
评论文本内容
评论者等级
评论发表距抓取的天数(days)
抓取部分带有追评的评论:追评文本内容、追评与初评相距时间
以上是这次任务的需求
这个页面大部分的信息都是动态渲染出来的,所以要用selenium
可以看到,要找到评论不是去常见的HXR而是JS,peoduct开头的就是评论信息
Request URL: https://sclub.jd.com/comment/…
Request Method: GET
Status Code: 200
Remote Address: 117.148.129.129:443
Referrer Policy: no-referrer-when-downgrade
在这个url中,查询字符串中的大部分参数不是必须的
在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,784758214
群里有不错的学习视频教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容
def make_url(baseurl, page=0, score=0, productId='3756271'):
data1 = {
'callback': 'fetchJSON_comment98vv7490',
'productId': productId,
'score': score,
'sortType': '6',
'page': page,
'pageSize': '10',
'isShadowSku': '0', #
'fold': '1', #
}
url = baseurl + urlencode(data1)
return url
具体的可以在代码中体现。
下面我要贴代码了,坐稳扶好,不想复制的话,可以去我的github上下载。
# https://www.jd.com/allSort.aspx
import requests
from pyquery import PyQuery as pq
from prettyprinter import cpprint
import json
from urllib.parse import urlencode
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import time
import csv
import datetime
import sys
def get_ajax(url):
headers = {
'referer': 'https://item.jd.com/3756271.html', # referer: https://item.jd.com/3756271.html
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36',
}
response = requests.get(url, headers=headers)
return json.loads(response.text[26:-2])
def make_url(baseurl, page=0, score=0, productId='3756271')