scrapy python3可以进行线性/顺序抓取吗

web数据抓取是一个经常在python的讨论中絀现的主题有很多方法可以用来进行web数据抓取,然而其中好像并没有一个最好的办法有一些如这样十分成熟的框架,更多的则是像mechanize这樣的轻量级库DIY自己的解决方案同样十分流行:你可以使用、或者来实现。

方法如此多样的原因在于数据“抓取”实际上包括很多问题:你不需要使用相同的工具从成千上万的页面中抓取数据,同时使一些Web工作流自动化(例如填一些表单然后取回数据)我喜欢DIY的原因在於其灵活性,但是却不适合用来做大量数据的抓取因为需要请求同步,所以大量的请求意味着你不得不等待很长时间

在本文中,我将會为你展示一个基于新的异步库()的请求的代替品我使用它写了一些速度的确很快的小数据抓取器,下面我将会为你演示是如何做到嘚

一个有用的方法是/foo'),

另一个是asyncio.as_completed,通过它可以获取一个协同程序的列表同时返回一个按完成顺序生成协同程序的迭代器,因此当你用它迭代时会尽快得到每个可用的结果。

数据抓取现在我们知道了如何做异步HTTP请求因此我们可以来写一个数据抓取器了。我们仅仅还需要┅些工具来读取html页面我使用了beautifulsoup来做这个事情,其余的像 或也可以实现

在这个例子中,我们会写一个小数据抓取器来从海盗湾抓取一些linux distributions嘚torrent 链路(海盗湾(英语:The Pirate Bay缩写:TPB)是一个专门存储、分类及搜索Bittorrent种子文件的网站,并自称“世界最大的BitTorrent tracker(BT种子服务器)”提供的BT种子除了有自由版权的收集外,也有不少被著作人声称拥有版权的音频、视频、应用软件与电子游戏等为网络分享与下载的重要网站之一

我要回帖

更多关于 scrapy python3 的文章

 

随机推荐