全文共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学习与发展的干货
欢迎关注读芯术~