python爬虫爬取京东商品评价_python爬取京东商品信息及评论
'''
爬取京东商品信息:
功能: 通过chromeDrive进行模拟访问需要爬取的京东商品详情页(https://item.jd.com/100003196609.html)并且程序支持多个页面爬取,输入时以逗号分隔,
思路: 创建webdriver对象并且调用get方法请求url,进入页面根据dom结构爬取一些简要信息,之后
通过模拟点击商品评价按钮,再分别解析没个用户的评价信息,到每页的底部时,模拟点击下一页按钮
获取新的一页数据。
提取商品信息:
商品名称: {goods_name}
商品价格: {goods_price}
好评度: {percent_con}
评价标签: {tags}
评价类型
姓名:{username}
星级:{star}
文字:{word}
评价图片: {picList}
购买类型: {order_type}
购买日期:{order_date}
点赞人数: {likes}
评论人数: {
'''
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time
# 根据类名用来判断元素是否存在
def isElementPresent(driver, element):
"""
用来判断元素标签是否存在,
"""
try:
driver.find_element_by_class_name(element)
# 原文是except NoSuchElementException, e:
except NoSuchElementException as e:
# 发生了NoSuchElementException异常,说明页面中未找到该元素,返回False
return False
else:
# 没有发生异常,表示在页面中找到了该元素,返回True
return True
## 获取评价
def get_evaluation(goods_detail):
js_code = '''
window.scrollTo(0,2000);
'''
driver.execute_script(js_code) # 执行js代码
## 评价详细信息
try:
comments = goods_detail.find_elements_by_class_name('comment-item')
for comment in comments:
picList = []
username = comment.find_element_by_class_name('user-info').text.replace("\n", "")
star = comment.find_element_by_class_name('comment-star').get_attribute('class')[-1] + '星级'
word = comment.find_element_by_class_name('comment-con').text.replace("\n", "")
# 调用isElementExist方法,判断元素是否存在
flag = isElementPresent(comment, 'pic-list')
if flag:
pics = comment.find_element_by_class_name('pic-list').find_elements_by_tag_name('a')
for pic in pics:
picList.append(pic.find_element_by_tag_name('img').get_attribute('src'))
order_type = comment.find_element_by_class_name('order-info').find_elements_by_tag_name('span')[0].text
order_date = comment.find_element_by_class_name('order-info').find_elements_by_tag_name('span')[-1].text
likes = comment.find_element_by_class_name('J-nice').text
sprite_comment = comment.find_element_by_class_name('comment-op').find_elements_by_tag_name('a')[2].text
goods_content = f'''
姓名:{username}
星级:{star}
文字:{word}
评价图片: {picList}
购买类型: {order_type}https://item.jd.com/100003196609.html,https://item.jd.com/100006966435.html,https://item.jd.com/100001168786.html
购买日期:{order_date}
点赞人数: {likes}
评论人数: {sprite_comment}
'''
print(goods_content)
except NoSuchElementException as e:
print(e)
def get_good(driver):
# 通过JS控制滚轮滑动获取所有商品信息
js_code = '''
window.scrollTo(0,5000);
'''
driver.execute_script(js_code) # 执行js代码
# 等待数据加载
time.sleep(2)
# 商品详情wrap
goods_detail = driver;
# 商品名称
goods_name = goods_detail.find_element_by_class_name('sku-name').text.replace("\n", " ")
# 商品价格
goods_price = goods_detail.find_element_by_class_name('price').text.replace("\n", " ")
# 评价信息
evaluation_btn = goods_detail.find_element_by_id('detail').find_element_by_class_name('tab-main').find_elements_by_tag_name('li')[4]
evaluation_btn.click()
print(evaluation_btn.text)
time.sleep(2)
# 好评度
percent_con = goods_detail.find_element_by_class_name('percent-con').text.replace("\n", " ")
# 评价tag
evaluation_tags = goods_detail.find_elements_by_class_name('tag-1')
tags = []
for tag in evaluation_tags:
tags.append(tag.text)
# 评价类型
evaluation_type_list = goods_detail.find_element_by_class_name('filter-list').find_elements_by_tag_name('li')
types = []
for type in evaluation_type_list:
if (type.get_attribute('data-tab') == 'trigger'):
types.append(type.find_element_by_tag_name('a').text)
goods_content = f'''
商品名称: {goods_name}
商品价格: {goods_price}
好评度: {percent_con}
评价标签: {tags}
评价类型: {types}
\n
'''
print(goods_content)
## 爬取评价信息
get_evaluation(goods_detail)
n =1
# 爬取后面的页面
while True:
flag = isElementPresent(goods_detail, 'ui-pager-next')
if flag:
element = driver.find_element_by_class_name('ui-pager-next')
driver.execute_script("arguments[0].click();", element)
# 等待数据加载
time.sleep(2)
n = n+1
## 爬取评价信息
get_evaluation(goods_detail)
print('%d商品页数:' % n)
else:
print('到底了.')
return
print('商品总页数:%d' % n)
if __name__ == '__main__':
# chrome_options = Options()
# chrome_options.add_argument('--headless')
# chrome_options.add_argument('--disable-gpu')
# driver = webdriver.Chrome(options=chrome_options)
# 获取用户商品的url
urlList = input('请输入爬取商品url(以逗号分割):').strip()
urlList = urlList.split(',')
# 可视化界面 需要下载 chromeDiiriver 及 chrome浏览器
driver = webdriver.Chrome()
driver.implicitly_wait(5)
for url in urlList:
driver.get(url)
get_good(driver)
driver.close();
python爬虫爬取京东商品评价_python爬取京东商品信息及评论相关推荐
- python爬虫搜特定内容的论文_python爬取指定微信公众号文章
python怎么抓取微信阅清晨的阳光比不上你的一缕微笑那么动人,傍晚的彩霞比不上你的一声叹息那么心疼,你的一个个举动,一句句话语都给小编带来无尽的幸福. 抓取微信公众号的文章 一.思路分析 目前所知晓 ...
- python爬取网页json数据_python爬取json数据库
手把手教你使用Python抓取QQ音乐数据(第一弹) [一.项目目标] 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 由浅入深,层层递进,非常适合刚入门的同学练手. [二. ...
- Python爬虫:最牛逼的 selenium爬取方式!
Python爬虫:最牛逼的 selenium爬取方式! 作为一个男人 在最高光的时刻 这是小编准备的python爬虫学习资料,加群:700341555即可免费获取! Python爬虫:最牛逼的 sel ...
- Python爬虫:运用多线程、IP代理模块爬取百度图片上小姐姐的图片
Python爬虫:运用多线程.IP代理模块爬取百度图片上小姐姐的图片 1.爬取输入类型的图片数量(用于给用户提示) 使用过百度图片的读者会发现,在搜索栏上输入关键词之后,会显示出搜索的结果,小编想大多 ...
- python爬虫--Scrapy框架--Scrapy+selenium实现动态爬取
python爬虫–Scrapy框架–Scrapy+selenium实现动态爬取 前言 本文基于数据分析竞赛爬虫阶段,对使用scrapy + selenium进行政策文本爬虫进行记录.用于个人爬虫学习记 ...
- Python爬虫之scrapy框架360全网图片爬取
Python爬虫之scrapy框架360全网图片爬取 在这里先祝贺大家程序员节快乐,在此我也有一个好消息送给大家,本人已开通了微信公众号,我会把资源放在公众号上,还请大家小手动一动,关注过微信公众号, ...
- Python爬虫实例 wallhaven网站高清壁纸爬取。
文章目录 Python爬虫实例 wallhaven网站高清壁纸爬取 一.数据请求 1.分析网页源码 2.全网页获取 二.数据处理 1.提取原图所在网页链接 2.获取高清图片地址及title 三.下载图 ...
- Python爬虫系列之抖音热门视频爬取
Python爬虫系列之抖音热门视频爬取 主要使用requests库以及手机抓包工具去分析接口 该demo仅供参考,已经失效,需要抖音2019年5月最新所有接口请点击这里获取 抖音资源获取接口文档请点击 ...
- python爬取微博恶评_python爬取微博评论的实例讲解
python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手.python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,无论是python新入手的小白,还是已经 ...
最新文章
- 网上测试了很多关于PYTHON的WEBSOCKET样例,下面这个才成功了
- 有关Location对象,及URL的解析
- jpa postgresql 使用uuid作为主键
- Java多线程学习总结(7)——创建线程池的正确姿势
- php mysql 高亮显示_PHP实现多关键字加亮功能
- php提前输出响应及注意问题
- 使用MNIST数据集训练出来的模型预测自己手写数据
- Python: 组合管理与蒙特卡洛方法实现
- [MATLAB]图像处理——交通标志的识别
- WIFI 2.4G及5G信道一览表
- vmware虚拟机的基础使用
- 以文会友,以书传情—山西省侨商联合会召开书画艺术委员会成立大会
- 音频基础概念及常见编码格式
- undefined是什么意思啊
- 采样频率在频谱分析中的理解
- NFT 作品集推荐|Lululand《爱是永恒》
- 【GD32F310开发板试用】Contiki-NG在GD32F310的移植
- 批量删除iPhone苹果通讯录的办法
- SAS2x28扩展卡
- 哈尔滨小学计算机上课时间,哈市中小学各校新学期作息时间调整汇总,看看有没有你的学校!...
热门文章
- Excel的题库转换为word的题库
- MSP430 单片机 SHT30 SHT31 温湿度传感器 MSP430F5529 MSP430G2553 程序
- 抖音小店入驻条件及费用最新版,2022抖音开店,商家入门指南
- 计算机替换字体怎么操作,电脑替换文字怎么操作
- java.lang.AbstractMethodError: dm.jdbc.driver.DmdbConnection.isValid(I)Z
- 基于spring mvc+bootstrap 集成的返利平台 新增内容-自动对接京东数据
- 阿里巴巴Java开发规范(终极版v1.3.0)--个人整理
- 这儿有你所需要的所有关于科研的网址
- 05 CSS从原理到熟练 - 1
- 计算机桌面备份在哪里,怎样备份系统,文件备份在哪里