python爬取京东商品信息_使用selenium爬取京东商品信息
今天我来分享一下如何使用Python的selenium库爬取京东商品信息。京东商品页面的每个商品都有商品名字,价格,店家信息,和评论数量等关于商品的信息,我要爬取的就是这些信息,通过商品名字,来获取一类商品的商品信息。
一,爬取思路分析
以爬取python书籍的商品信息为例,打开京东商城的首页,在搜索栏中输入 :python,点击搜索,有关Python的书籍就显示出来了,这时我们查看一下地址栏中的URL:
https://search.jd.com/Search?keyword=python&enc=utf-8&wq=python&pvid=1a6e8c7fb20f439dacd2dabfca18ede2
由于URL中的有些参数可以去掉,这里保留enc=utf-8这个参数,不然当关键字为中文时会出错。因此上面的URL我们可以简化成下面形式:
https://search.jd.com/Search?keyword=python&enc=utf-8
你可以把这个URL输入到地址栏中,然后你会得到和刚才相同的页面。接下来点击第2页,URL变成了:
https://search.jd.com/Search?keyword=python&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=python&page=3&s=58&click=0
简化后:
https://search.jd.com/Search?keyword=python&enc=utf-8&page=3
再看第3页:
https://search.jd.com/Search?keyword=python&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&page=5&s=101&click=0
URL简化后为:
https://search.jd.com/Search?keyword=python&enc=utf-8&page=5
由此我们可以发现URL随页数的变化规律为:
url = 'https://search.jd.com/Search?keyword=' + str(product) + "&enc=utf-8&page=" + str(page)
其中product是商品名,page = index * 2 – 1(index是页数)。下面我们来看一下商品信息在网页源代码中的位置,将鼠标置于页面商品信息位置处,然后右键-检查,你会发现商品信息在下面的标签里面:
细数li标签的个数发现只有30个,而一页有60本书的展示信息,只有一半,如果此时你使用requests库去爬取的话,只能每页获取到30个商品信息(一半)。但是如果你滑动鼠标至页面底部,此时再检查页面源代码,发现包含商品信息的li标签有60个,因此此时的网页源代码才是我们需要获取的。
二,使用selenium实现与页面之间的交互
我们要获取包含全部商品信息的网页源代码就需要和页面进行交互,即要让页面滑至底部。我们使用selenium中的driver.execute_script()方法来执行向下滑动至页面底部的js脚本。具体实现:
# 导入模块
from selenium import webdriver
driver = webdriver.Chrome()
driver.get(url)
# 执行页面向下滑至底部的动作
driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
页面滑至底部后,停顿几秒待页面加载完成!使用driver.page_source方法来返回此时页面的源代码。
# 停顿5秒等待页面加载完毕!!!(必须留有页面加载的时间,否则获得的源代码会不完整。)
time.sleep(5)
# 返回此时的网页源代码
html_sourcode = driver.page_source
三,解析页面
解析页面我们用bs4库,找到对应的的信息所在位置的标签,然后用find()方法一个一个地提取出这些信息,定义一个提取这些商品信息的函数:
# 提取商品信息
def parser(html, i, filepath):
soup = BeautifulSoup(html, 'html5lib')
# 总页数
total = eval(soup.find('span', 'p-skip').em.b.text)
# 定位到包含这些商品信息的代码
items = soup.find_all('div', 'gl-i-wrap')
for item in items:
# 商品名称
p_name = item.find('div', 'p-name').a.em.text
# 商品价格
p_price = item.find('div', 'p-price').strong.text
# 店家信息
p_shopinfo = item.find('div', re.compile('p-shop'))
if p_shopinfo.a is None:
p_shop = p_shopinfo.span.text
else:
p_shop = p_shopinfo.a.text
# 评论数量
p_comment = item.find('div', 'p-commit').strong.a.text
# 写入文件
with open(filepath, 'at', encoding="utf-8") as f:
f.write("{}.商品名称:{} 价格:{} 店家信息:{} 评论数量:{}\n".format(i, p_name, p_price, p_shop, p_comment))
# 可视化输出
print("{}.商品名称:{} 价格:{} 店家信息:{} 评论数量:{}".format(i, p_name, p_price, p_shop, p_comment))
# 统计这一页有多少商品
i += 1
return total, i
四,总结
爬取京东商品信息的关键是实现与页面之间的交互(即让页面滑动至底部),这样才能获取到包含全部60个商品信息的源代码,其他的话都是比较好处理的。
源代码地址(Github):京东商品信息爬虫源代码
我之前也写过一篇爬取京东商品图片的文章:利用python爬取京东商城商品图片,爬取思路是一致的,大家也可以参考一下!
喜欢 (10)or分享 (0)
python爬取京东商品信息_使用selenium爬取京东商品信息相关推荐
- python爬取pubmed的文献_利用selenium爬取pubmed,获得搜索的关键字最近五年发表文章数量...
PubMed 是一个提供生物医学方面的论文搜寻以及摘要,并且免费搜寻的数据库.是一个做生物方面经常要用到的一个查找文献的网站.最近刚学了爬虫相关的知识包括urllib库,requests库,xpath ...
- python爬虫爬取京东商品评价_网络爬虫-爬取京东商品评价数据
前段时间做商品评价的语义分析,需要大量的电商数据,于是乎就自己动手爬取京东的数据.第一次接触爬虫是使用selenium爬取CNKI的摘要,基于惯性思维的我仍然想用selenium+Firefox的方法 ...
- Php使用selenium爬虫,selenium,python爬虫_使用selenium爬取网站时输出结果不正确,selenium,python爬虫 - phpStudy...
使用selenium爬取网站时输出结果不正确 网站链接:http://www.ncbi.nlm.nih.gov/pubmed?term=(%222013%22%5BDate%20-%20Publica ...
- python爬取历史天气查询_历史天气爬取
历史天气爬取 爬取来源:2345天气网 爬取周期:月度,可自行更改 爬取城市:部分城市,可自行更改 具体代码: import requests import demjson import csv li ...
- python获取渲染之后的网页_使用Pyppeteer抓取渲染网页
Pyppeteer是Puppeteer的非官方Python支持,Puppeteer是一个无头JavaScript的基于Chrome/Chromium浏览器自动化库,可以用于对渲染网页的抓取. 比较了P ...
- 取模运算性质_求余、取模运算在RTOS中计算优先级的理解
uCOS3中的部分源码: /* 置位优先级表中相应的位 */ void OS_PrioInsert (OS_PRIO prio) { CPU_DATA bit; CPU_DATA bit_nbr; O ...
- sql 获取数据库字段信息_使用DBATools获取SQL数据库详细信息
sql 获取数据库字段信息 In the series of articles on DBATools, (see TOC at the bottom) we are exploring useful ...
- python爬取京东手机数据_用scrapy爬取京东的数据
本文目的是使用scrapy爬取京东上所有的手机数据,并将数据保存到MongoDB中. 一.项目介绍 主要目标 1.使用scrapy爬取京东上所有的手机数据 2.将爬取的数据存储到MongoDB 环境 ...
- python爬虫能爬取微信密码吗_爬虫如何爬取微信公众号文章
下篇文章:python爬虫如何爬取微信公众号文章(二) 下下篇连接python爬虫如何实现每天爬取微信公众号的推送文章 因为最近在法院实习,需要一些公众号的数据,然后做成网页展示出来便于查看,之前我倒 ...
- python爬虫爬取百度图片总结_爬虫篇| 爬取百度图片(一)
什么是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模 ...
最新文章
- Java Timer 定时器的使用
- 测试用例设计之正交表法详解
- 【论文解读】OneNet:一阶段的端到端物体检测器,无需NMS
- iframe 的一点经历
- CVPR 2019 | 针对人脸识别系统的高效黑盒对抗攻击算法
- MyBatis的几个重要概念和工作流程
- BundlePhobia
- python包实际怎么使用_Python--模块与包
- 结不起婚生不起娃的低欲望社会来了?这份自救指南拿走不谢!
- OEA中的缓存模块设计
- 在AIX系统下查询硬件信息的方法
- 《零点起飞学C++》.(秦广军)
- PR2021安装包下载
- 骑在银龙的背上歌词(带罗马音)
- vss服务器状态失败_VSS常犯错误(转载)
- 搜索进阶-迭代加深搜索
- 最适合游戏的显卡排行榜,显卡天梯图
- 菜鸟知识-五大智能手机操作系统
- 百度云不限速下载最新破解真好用
- Python中的图像处理(第六章)Python图像量化及采样处理(2)