今天我来分享一下如何使用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爬取京东商品信息相关推荐

  1. python爬取pubmed的文献_利用selenium爬取pubmed,获得搜索的关键字最近五年发表文章数量...

    PubMed 是一个提供生物医学方面的论文搜寻以及摘要,并且免费搜寻的数据库.是一个做生物方面经常要用到的一个查找文献的网站.最近刚学了爬虫相关的知识包括urllib库,requests库,xpath ...

  2. python爬虫爬取京东商品评价_网络爬虫-爬取京东商品评价数据

    前段时间做商品评价的语义分析,需要大量的电商数据,于是乎就自己动手爬取京东的数据.第一次接触爬虫是使用selenium爬取CNKI的摘要,基于惯性思维的我仍然想用selenium+Firefox的方法 ...

  3. Php使用selenium爬虫,selenium,python爬虫_使用selenium爬取网站时输出结果不正确,selenium,python爬虫 - phpStudy...

    使用selenium爬取网站时输出结果不正确 网站链接:http://www.ncbi.nlm.nih.gov/pubmed?term=(%222013%22%5BDate%20-%20Publica ...

  4. python爬取历史天气查询_历史天气爬取

    历史天气爬取 爬取来源:2345天气网 爬取周期:月度,可自行更改 爬取城市:部分城市,可自行更改 具体代码: import requests import demjson import csv li ...

  5. python获取渲染之后的网页_使用Pyppeteer抓取渲染网页

    Pyppeteer是Puppeteer的非官方Python支持,Puppeteer是一个无头JavaScript的基于Chrome/Chromium浏览器自动化库,可以用于对渲染网页的抓取. 比较了P ...

  6. 取模运算性质_求余、取模运算在RTOS中计算优先级的理解

    uCOS3中的部分源码: /* 置位优先级表中相应的位 */ void OS_PrioInsert (OS_PRIO prio) { CPU_DATA bit; CPU_DATA bit_nbr; O ...

  7. sql 获取数据库字段信息_使用DBATools获取SQL数据库详细信息

    sql 获取数据库字段信息 In the series of articles on DBATools, (see TOC at the bottom) we are exploring useful ...

  8. python爬取京东手机数据_用scrapy爬取京东的数据

    本文目的是使用scrapy爬取京东上所有的手机数据,并将数据保存到MongoDB中. 一.项目介绍 主要目标 1.使用scrapy爬取京东上所有的手机数据 2.将爬取的数据存储到MongoDB 环境 ...

  9. python爬虫能爬取微信密码吗_爬虫如何爬取微信公众号文章

    下篇文章:python爬虫如何爬取微信公众号文章(二) 下下篇连接python爬虫如何实现每天爬取微信公众号的推送文章 因为最近在法院实习,需要一些公众号的数据,然后做成网页展示出来便于查看,之前我倒 ...

  10. python爬虫爬取百度图片总结_爬虫篇| 爬取百度图片(一)

    什么是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模 ...

最新文章

  1. Java Timer 定时器的使用
  2. 测试用例设计之正交表法详解
  3. 【论文解读】OneNet:一阶段的端到端物体检测器,无需NMS
  4. iframe 的一点经历
  5. CVPR 2019 | 针对人脸识别系统的高效黑盒对抗攻击算法
  6. MyBatis的几个重要概念和工作流程
  7. BundlePhobia
  8. python包实际怎么使用_Python--模块与包
  9. 结不起婚生不起娃的低欲望社会来了?这份自救指南拿走不谢!
  10. OEA中的缓存模块设计
  11. 在AIX系统下查询硬件信息的方法
  12. 《零点起飞学C++》.(秦广军)
  13. PR2021安装包下载
  14. 骑在银龙的背上歌词(带罗马音)
  15. vss服务器状态失败_VSS常犯错误(转载)
  16. 搜索进阶-迭代加深搜索
  17. 最适合游戏的显卡排行榜,显卡天梯图
  18. 菜鸟知识-五大智能手机操作系统
  19. 百度云不限速下载最新破解真好用
  20. Python中的图像处理(第六章)Python图像量化及采样处理(2)

热门文章

  1. Teemo Attacking
  2. 微软.NET平台OA办公解决方案
  3. 433m的模块含义及该如何适当的选择对应的无线模块
  4. HTTP常见状态码及常见错误
  5. webpack安装问题(已解决)
  6. 文件恢复:Docrepair-MS Word文档修复软件
  7. Macbook实用技巧——小白入门必须会的
  8. Hadoop数字统计
  9. Linux LED子系统调试与应用 设备树官方文档与 gpio-leds.c 源码详解
  10. Skynet服务器框架(八) 任务和消息调度机制