知识库 : 使用Scrapy + Selenium框架抓取京东商品信息

Edit Document

使用 Scrapy + Selenium 框架抓取京东商品信息

目录

使用 Scrapy + Selenium 框架抓取京东商品信息

一、介绍

二、 Scrapy 提取商品详情链接

三、使用 selenium webdriver 下载商品详情页面

四、总结

 

一、介绍

Scrapy 是一个基于 Twisted ,纯 Python 实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容、图片、视频等,非常方便。

Selenium 本是用来对 web application 做自动化测试的。不过,它有个天大的好处:能让我们用 python( 当然不仅是 python) 代码模拟人对浏览器的操作。

由于 scrapy middleware 的配置比较复杂,这里采用一个简单的方法:改用最简单的 spider, parse 函数中用 selenium 下载详情页面 ,我们知道京东商品页面我们感兴趣的信息大部分是由 javascript 代码生成,因此可以先在浏览器中执行 JavaScript 代码,再从最终的页面上抓取信息(当然也有其他的方法)。

 

二、 S crapy 提取商品详情链接

这里使用冰箱这个类别做为例子介绍,冰箱列表页面 http://list.jd.com/list.html?cat=737,794,878 ,使用 scrapy 中的 SmglLinkExtractor 提取 各个冰箱商品信息 的链接 ,并指定回调函数。

 

 

三、使用 selenium webdriver 下载商品详情页面

1) . 初始化 Xvfb 创建 Firefoxwebdriver 实例

 

 

              2). 使用 driver.get() 尝试打开提取的商品详情页面, webdriver 会等待网页元素加载完成之后才把控制权交回脚本 ,查看得到的源文件是不是执行过 js 的“源文件”

 

 

通过测试可以发现 html.html 中已经可以查看商品的价格、促销、商品颜色规格等信息 ( 最初的源文件是没有的 )

 

              3). 使用 webdriver 提供了很多如 find_element_by_* 的方法来匹配要查找的 信息 元素 ,例如价格信息

 

四、总结

scrapy 中使用 selenium 模拟浏览器下载页面需要新建虚拟窗口并在后台打开浏览器,因此在抓取页面相比默认下载器速度要慢。

Attachments:

使用Scrapy + Selenium框架 抓取京东商品信息.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)
使用Scrapy + Selenium框架 抓取京东商品信息.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)
使用Scrapy + Selenium框架 抓取京东商品信息.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)