初步使用Scrapy-Splash爬取小说网所有小说

1 安装Scrapy

2 安装Scrapy-Splash

3 Scrapy对接Splash

5 通过队列实现爬取所有小说,生产SplashRequest核心代码如下

    def start_requests(self):
            queue = Queue()
            queue.put(self.base_urls)
            while queue != None:
                response = requests.get(queue.get(), headers=self.headers)
                html = etree.HTML(response.text)
                if response.status_code == 200:
                    charptersip = html.xpath('//div[@id="list"]//dd/a/@href')
                    if charptersip:
                        for charptes in charptersip:
                            base = 'http://www.biquge.com.tw'
                            yield SplashRequest(url=base + charptes, callback=self.parse)

                templist = html.xpath('//div[@class="footer_link"]//a/@href')
                for i in range(0, len(templist) - 1):
                    templist[i] = self.story_base + templist[i]
                    queue.put(templist[i])

 

队列queue中添加的第一个url是某本小说包含其所有章节的页面,且页面源代码中包含了各个章节的链接。

接下来将各个章节添加到SplashRequest中进行调度,最后将该页面关联的其他小说(也在此页面中)添加进队列,继续爬取.

由于该网站页面构造简单,所以代码不多。。。Splash是异步爬取,速度非常快,100M宽带1min能爬700页,也要注意数据入库的排序问题。

代码地址:https://github.com/yuebanwanwan/ScrapySplashCrawlAllStory.git

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值