scrapy通用爬虫对接selenium+chromedriver实现简书整站爬取

此前已经做过一些对于ajax网站的爬取,或分析ajax规则,或使用selenium+chromedriver去爬取,但它们都是在scrapy框架外实现的,那么,怎么利用scrapy框架去爬取带有ajax加载数据的信息呢。

以简书为例:

 如上图,我们发现有些文章它被较多的专题收录,那么我们想要获取没有显示出来的专题,该怎么办呢。

然后,我们明确要做的是简书的整站爬虫,怎么能确保爬下来所有的内容呢。

第一,我们可以用scrapy对接selenium+chromedriver让它模拟浏览器,不停的点击“展开更多”,来获取所有专题

第二,我们使用通用爬虫,定义爬取规则,由于每篇文章下,都有推荐阅读,如下:

 我们不停地获取推荐,根据推荐的推荐一直爬取,理论上就可以做到整站爬取。

那么。明确了这两点,我们就可以开始写代码了。

首先创建一项目:

scrapy startproject jianshu

scrapy genspider -t crawl js jianshu.com

我们用pycharm打开这个项目:

首先,我们明确一下获取那些数据,这里简单点,先写items.py:

import scrapy


class JianshuItem(scrapy.Item):
    #简单获取四项信息,标题,作者,内容,标签
    #其中标签如果有多项是通过点击获取
    title = scrapy.Field()
    author = scrapy.Field()
    content = scrapy.Field()
    tags = scrapy.Field()

然后是js.py:

import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from jianshu.items import JianshuItem


class JsSpider(CrawlSpider):
    name = 'js'
    allowed_domains = ['jianshu.com']
    start_urls = ['https://www.jianshu.com/']
    
    #提取规则根据首页和文章页下的推荐url获取,放入parse_detail解析,跟进爬取
    rules = (
     
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值