爬虫框架 Scrapy 入门基础:对接 Selenium 实战

本文介绍了如何使用Scrapy框架结合Selenium处理JavaScript动态渲染的网页。通过实例展示了从新建Scrapy项目,定义数据结构,设置Spider,到对接Selenium解析页面,最后将数据存储到MongoDB的全过程。
摘要由CSDN通过智能技术生成

引言

Scrapy 抓取页面的方式和 Requests 类库是一样的,都是直接模拟 HTTP 请求,对于由 JavaScript 动态渲染的页面就有些显得无能为力了。

我们前面抓取由 JavaScript 动态渲染的页面是使用 Selenium 对接浏览器进行页面抓取,当然,在 Scrapy 中同样也可以对接 Selenium 。

通过这种方案,我们无需关心一个页面加载是发送的请求,也无需关注页面的渲染过程,直接抓取最终结果就行,真正做到了可见即可抓。

示例

小目标

首先定一个小目标,前面的文章我们通过 Selenium 抓取了某东的商品信息,本篇我们依然使用这个站点,感谢某东为我们提供的素材。

准备

请各位同学确认自己本地已经正确安装 Scrapy 、 Selenium 以及 Selenium 所需要使用的一些驱动库,如果尚未安装的同学可以翻翻前面的文章。

新建项目

本篇内容还是新建一个新的 Scrapy 项目,并且命名为 scrapy_selenium_demo ,命令如下:

scrapy startproject scrapy_selenium_demo

记得找一个自己喜欢的目录,最好是纯英文目录。

然后新建一个 Spider ,命令如下:

scrapy genspider jd www.jd.com

记得顺手修改下 settings.py 中的配置,将 robots.txt 设置为 False ,否则我们无法抓取到相关的商品数据,因为在机器人协议中某东并不允许抓取商品数据,修改如下:

ROBOTSTXT_OBEY = False

定义数据结构

第一步还是我们将要抓取的数据结构定义到 Item ,代码如下:

import scrapy


class ProductItem(scrapy.Item):
    collection = 'products'
    image = scrapy.Field()
    price = scrapy.Field()
    name = scrapy.Field()
    commit = scrapy.Field()
    shop = scrapy.Field()
    icons = scrapy.Field()

这里我们定义了 6 个字段,和之前的示例完全相同,然后定一个了 collection &#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值