全文共1433字,预计学习时长3分钟

打开网易新闻 查看更多图片

什么是爬虫?

爬虫就是一种网页数据抓取程序。它们就像一只只不知疲倦的蜘蛛,根据搜索指令,在互联网上迅速爬来爬去,把主人需要的信息一条一条拮取出来。比如我们日常使用的搜索引擎,就是一个巨大的虫窝,每天无数个“爬虫”不知疲倦地工作,将信息分类整理不亦乐乎。

这种挑战智商的事情,对我来说是万万不能的。好在我的程序猿男友,舍身拔“猴毛”,变出无数个爬虫分身,改变了我,一个底层小编没日没夜复制粘贴的命运。

虽然网页上有各种网页抓取软件可用,但怎么比得过男友满含爱意的“私人订制”?

男友:用第三方是对我职业的侮辱。

我:OK,fine……

于是……JS就像一块砖,哪里需要哪里搬,再次上线。

打开浏览器——解析HTML——运行页面脚本,注入将在浏览器上下文中运行的数据以提取代码。然后,为了进行网页抓取,我们需要无数的包!当然,不是包包,是JavaScript的包。

比如传说中的五大最佳JavaScript库:

1. Request (又名HTTP客户机) :

· Request是一个极其简单但又高效的HTTP客户机,能使你快速而简单地进行HTTP调用。

· 支持HTTPS,默认情况下遵循重定向。

· 操作简易,可以直接使用,而无需花时间研究产品说明书。

例如,如果你想下拉一个页面的内容,这很简单:

const request = require('request');

request('http://stackabuse.com',function(err, res, body) {

console.log(body);

});

特点:

· 支持所有HTTP方法(GET、POST、DELETE等)

· 支持表单上传

· 支持流和回调接口

· HTTP身份验证

· 代理支持

· 支持TLS/SSL协议

2. Cheerio(又名解析器):

· Cheerio提供了专为服务器设计的快速、灵活和精益的核心jQuery实现。

· cheerio解析标记,并提供一个用于遍历/操作结果数据结构的API。

特点:

· 熟悉的语法:Cheerio实现了核心jQuery的一个子集。它删除了jQuery库中所有的DOM不一致性和浏览痕迹,充分展示了API的魅力。

· 快速:Cheerio使用非常简单、一致的DOM模型。因此,解析、操作和呈现非常高效。初步的端到端基准测试表明cheerio比JSDOM快8倍左右。

· 惊人的灵活性:Cheerio几乎可以解析任何HTML或XML文档。

3.Osmosis(又名解析器)

· Osmosis包括HTML/XML解析器和webscraper。

· 它是用node.js编写的,包含了css3/xpath选择器和轻量级http包装器。

· 没有像Cheerio这样的大型依赖项。

特点:

· 支持CSS 3.0和XPath1.0选择器的混合

· 加载和搜索AJAX内容

· 记录url、重定向和错误

· cookie jar和自定义cookie /header /用户代理

· 登录/表单提交、会话cookie和基本验证

· 单个代理或多个代理,处理代理故障

· 重试和重定向限制

4. Puppeteer(又称无头Chrome自动化浏览器):

Puppeteer是一个Node.js库,提供了一个简单但高效的API,使您能够控制谷歌的Chrome或Chromium浏览器。

它还能够在headless模式下运行Chromium(对于在服务器上运行浏览器非常有用),并且可以发送和接收请求,而不需要用户界面。

最棒的是其可在后台操作,按照API的指示执行操作。

特点:

· 单击按钮、链接和图像等元素

· 自动提交表单

· 导航页面

· 使用时间轴跟踪来找出问题所在

· 直接在浏览器中对用户界面和各种前端应用程序进行自动化测试

· 截屏

· 将网页转换为pdf文件

5. Apify SDK(又称完整的Web抓取框架):

· Apify SDK是用于抓取和web爬行的开源Node.js库。

· Apify SDK是独特的工具,其简化了web爬虫、抓取器、数据提取器和web自动化工作的开发。

· 提供了管理和自动扩展无头Chrome / Puppeteer实例池的工具,可以维护要抓取的url队列,将抓取结果存储到本地文件系统或云,旋转代理等等。

· 既可以在自己的应用程序中独立使用,也可以在运行在Apify云上的参与者中使用。

特点:

· 使用url的持久队列对整个网站进行深度抓取。

· 在CSV文件中运行包含100k个url的抓取代码,代码崩溃时不会丢失任何数据。

· 通过旋转代理来隐藏你的浏览器源。

· 定期调度代码运行并发送错误通知。

· 禁用网站使用的浏览器指纹保护。

随着时间的推移,网页抓取的需求不断增长。所以程序猿们,你们的春天来了!搞数据只会复制粘贴的妹子一抓一大把,用你的代码认真撩妹吧!但是网页抓取也需谨慎,信息归根结底不是一个可以窃取和贩卖的东西,千万不要像这位老铁一样秀:

打开网易新闻 查看更多图片

留言 点赞 发个朋友圈

我们一起分享AI学习与发展的干货

欢迎关注读芯术~