推荐几个值得关注的爬虫库

栏目: Python · 发布时间: 5年前

内容简介:爬虫速度太慢?在这里推荐几个值得关注的异步爬虫库,给你的爬虫提速。看看有没有你没听过的?为什么要推荐类似 Requests 的库呢?Requests 不够好吗?虽然 Requests 对于新手很容易上手,但它是同步的、并不是异步设计的。在 HTTP 请求的时候是需要 IO 等待的。比如说,当你使用 Requests 库进行请求,网站进行返回的时候,这时 IO 就会阻塞,程序就需要等待网站的返回,这就让爬取速度变慢了。

爬虫速度太慢?在这里推荐几个值得关注的异步爬虫库,给你的爬虫提速。看看有没有你没听过的?

类似 Requests 的库

为什么要推荐类似 Requests 的库呢?Requests 不够好吗?

虽然 Requests 对于新手很容易上手,但它是同步的、并不是异步设计的。在 HTTP 请求的时候是需要 IO 等待的。比如说,当你使用 Requests 库进行请求,网站进行返回的时候,这时 IO 就会阻塞,程序就需要等待网站的返回,这就让爬取速度变慢了。

那么异步的好处在哪呢? (侯爵老师兴奋的停不下来,继续说着)

Python 的代码是一行行去执行。也就是说,如果哪一行是非常耗时间的,之后的所有事情都会等到它完成才执行。因此 Python 异步编程也就应运而生用来解决这个问题。异步的方式在于你写的这些代码中哪些是执行时间非常短的,那么就先执行,耗时的操作会被搁在后面,并且执行这个过程完全都由 Python 的异步库自己来进行调控。

这样的好处就是只写少量的代码也能达到不错的效率,同时在代码可读性上也变得更加直观了。

下面这几个库,都是类似 Requests 的用法但是基于异步的设计。

推荐几个值得关注的爬虫库

https://github.com/aio-libs/aiohttp

最推荐:aiohttp

aiohttp 是纯粹的异步框架,同时支持 HTTP 客户端和 HTTP 服务端,可以快速实现异步爬虫。坑比其他框架少。并且 aiohttp 解决了requests 的一个痛点,aiohttp 可以轻松实现自动转码,对于中文编码就很方便了。

推荐几个值得关注的爬虫库

https://github.com/theelous3/asks

第二推荐:asks

Python 自带一个异步的标准库 asyncio,但是这个库很多人觉得不好用,甚至是 Flask 库的作者公开抱怨自己花了好长时间才理解这玩意,于是就有好事者撇开它造了两个库叫做 curio 和 trio,而这里的 ask 则是封装了 curio 和 trio 的一个 http 请求库。

推荐几个值得关注的爬虫库

用起来和 Requests 90%相似,新手也可以很快上手。

推荐几个值得关注的爬虫库

https://github.com/vibora-io/vibora

第三推荐:vibora

号称是现在最快的异步请求框架,跑分是最快的。写爬虫、写服务器响应都可以用。

但这个项目一直在重构,这谁受得了。现在页面上还挂着项目正在重构的警告,使用需谨慎啊。

类似 Selenium  的库

Selenium +webdriver 可以用来模拟用来模拟浏览器请求,它也是同步的、而不是异步设计的。而下面这些库不光是从效率上,还有易用性上也比 selenium 进化了不少。

推荐几个值得关注的爬虫库

https://github.com/miyakogi/pyppeteer

最推荐:Pyppeteer

Pyppeteer 是异步无头浏览器(Headless Chrome),从跑分来看比 Selenium + webdriver 快,使用方式是最接近于浏览器的自身的设计接口的。它本身是来自 Google 维护的 puppeteer,但是按照 Python 社区的梗,作者进行了封装并且把名字中的 u 改成了 y :see_no_evil:

特点是异步的设计,接口非常浏览器化,注入 JS 也很方便。

推荐几个值得关注的爬虫库

https://github.com/tryolabs/requestium

第二推荐:Requestium

Requests 的作者 Kenneth Reitz 曾经转发称赞过这个库。

推荐几个值得关注的爬虫库

Requestium 是 Requests 和 Selenium 封装的产物,并且提供了友好的接口切换,这样就可以根据需求切换了。

值得一提的是,Requestium 有一个 Wait Until 的方便设计,它的作用是确保页面中的某一个元素出现了才会进行下面的代码,这样一来就很轻松的避免了一些诡异的错误。GitHub 页面上有一组示例,是使用 Requestium 以及使用 Requests + Selenium + lxml 的对比,可以很明显看出区别。

推荐几个值得关注的爬虫库
推荐几个值得关注的爬虫库

https://github.com/HDE/arsenic

第三推荐:arsenic

HDE 公司用在了实际生产中的项目抽离出来的框架。和 selenium 接口几乎一致,学习成本相对较低。不同在于是异步的设计。不过文档有点糟糕。

框架

推荐几个值得关注的爬虫库

https://github.com/lorien/grab

最推荐:Grab 

前端圈很流行说渐进式框架,那么 Grab 可以说是爬虫界的渐进式框架。想简单用时有简单的用法,想复杂使用时也有复杂的用法。封装的很好,基于生成器异步的设计。

推荐几个值得关注的爬虫库

https://github.com/kkyon/botflow

第二推荐:botflow 

国人作者。概念很新颖,定位成了处理数据工作流的框架,可以用来爬虫、机器学习、量化交易等等。

推荐几个值得关注的爬虫库

https://github.com/howie6879/ruia

第三推荐:ruia 

国人作者。比较接近 Scrapy 的使用方式,异步设计。作者也在知乎但是很低调 @howie

非 Python 框架

推荐几个值得关注的爬虫库

https://github.com/gocolly/colly

Golang 爬虫框架 

应该是 Golang 里使用量最多的爬虫框架了。Golang 语言本身就对并发支持很好。让你在使用时只考虑业务本身就可以。框架结构化、清晰、代码好读。

推荐几个值得关注的爬虫库

https://github.com/yujiosaka/headless-chrome-crawler

nodejs 爬虫框架 

JS 圈里的一个奇葩,整个爬虫都基于 Chrome ,并且自带一个调度队列。实际测试速度和稳定性均不俗。

如果你想系统学习爬虫,可以来参加我们的 Python 商业爬虫学徒计划 ,皓禹老师和侯爵老师一起手把手带你到爬虫熟手的水平,这几天就截止报名了,目前剩余的名额也不多了。

推荐几个值得关注的爬虫库

课程不仅教你写爬虫,还带着你写出一个易用可插拔、工程化的商业爬虫框架。

推荐几个值得关注的爬虫库

框架的基本结构 from 皓禹老师

如果想咨询更多信息,请加西西姐微信 794498950,备注学徒计划

也可点击查看课程详情: Python 商业爬虫学徒计划

推荐几个值得关注的爬虫库

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

精通CSS

精通CSS

Andy Budd / 陈剑瓯 / 人民邮电出版社 / 2006 / 39.00

本书将最有用的CSS技术汇总在一起,在介绍基本的CSS概念和最佳实践之后,讨论了核心的CSS技术,例如图像、链接、列表操纵、表单设计、数据表格设计以及纯CSS布局。每一章内容由浅入深,直到建立比较复杂的示例。之后本书用两章讨论招数、过滤器、bug和bug修复,最后由Simon Collison和Cameron Moll两位杰出的CSS设计人员,将书中讨论的许多技术组合起来,给出了两个实例研究。本书......一起来看看 《精通CSS》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具