什么是ScrapingHub?
Scrapy是一个用于web爬行的开源框架。这个框架是用python编写的,最初是为网页抓取而设计的。Web抓取也可以用于使用API提取数据。ScrapingHub提供了从网页抓取数据的整个服务,即使对于复杂的网页也是如此。
为什么是ScrapingHub?
比如说,一个网站提供了一个输入字段,作为回报,一个基于搜索查询的get响应。其目的是通过输入并获得响应来获取所有数据。现在这个输入字段可以有从“0000”字符串到“9999”字符串的数字,所以简而言之,需要输入10000个,这样就可以从网站上获得所有结果。现在,对于每个请求,比如“0000”,将需要4-5分钟,作为响应,您将获得1000多个字段的数据。它可能会有所不同,因为在最后,网站将返回所有数字以“0000”结尾的数据,而对于网站来说,查询和返回这些数据需要时间。如果我们做一些小数学,那么10000*5=50000分钟,这意味着大约35天。
因此,对于初学者来说,可以使用Python2.7的mechanize模块进行查询,但最终需要35天才能通过不间断地运行PC/笔记本电脑来完成。另一种解决方案是,可以使用多线程和多处理来避免这种情况,但以有组织的方式保存数据并克服这种复杂性需要大量时间。但是使用 痒痒的 将节省大量时间。尽管如此,我们仍然需要运行这个脚本至少1-3天,因为我们正在讨论如何删除数百万数据。因此,要克服这个问题,最好的选择是求助于 ScrapingHub .
ScrapingHub提供了在云上部署Scrapy spider并执行它的功能。作为回报,它将运行我们的蜘蛛24小时(免费用户)或7天(付费),这是值得的。这就是为什么人们可以使用ScrapingHub来节省时间和成本。
如何做到这一点:
步骤1:在本地机器中创建Spider
在里面 前一篇文章 ,我们创建了一个简单的蜘蛛来抓取网页并获取该网站上的所有URL。同样,只需添加一个额外的功能,通过在脚本中维护set并在添加之前进行交叉检查,就可以避免删除重复的url。
# importing scrapy module import scrapy class ExtractUrls(scrapy.Spider): # Name of the spider crawled = set () # Set to avoiding duplicate url name = "extract" def start_requests( self ): # Starting url mentioned for url in urls: yield scrapy.Request(url = url, callback = self .parse) def parse( self , response): title = response.css( 'title::text' ).extract_first() links = response.css( 'a::attr(href)' ).extract() for link in links: yield { 'title' : title, 'links' : link } if ( 'geeksforgeeks' in link and link not in self .crawled): self .crawled.update(link) yield scrapy.Request(url = link, callback = self .parse) |
scrapy crawl extract -o links.json
运行这个爬行器之后,它应该能够成功地抓取并将其保存在链接中。但我们需要节省时间,并希望至少运行24小时。所以我们将在ScrapingHub上部署这个蜘蛛。 第2步:在ScrapingHub创建帐户
去 ScrapingHub登录页面 并使用谷歌或Github登录。它将重定向到仪表板。
现在点击CreateProject并提及项目名称。点击Scrapy按钮,因为我们的蜘蛛是用Scrapy框架构建的。
单击后,您将被重定向到项目仪表板,并将看到两个部署选项。 1.使用CLI部署 2.使用Github部署
与CLIm一起做,因为它更受欢迎。让我们切换回本地项目,配置一些设置。 第3步:配置
pip install shub
shub login
shub deploy ID
![图片[2]-在ScrapingHub上部署Scrapy spider-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/geeks/geeks_ddd-1-1024x245.png)
在Spiders仪表板部分,用户可以看到准备就绪的spider。只需点击蜘蛛名称和运行按钮。免费用户将获得1个单元的免费,即用户可以运行一个蜘蛛最多24小时。之后,它将自动停止。用户可以购买单位来延长时间。
通过点击Running Job(运行作业)部分下的项目,它将被重定向到另一个页面,该页面将显示当时所有被刮除的项目。工作区将显示图表;显示蜘蛛的数据。运行spider 5-6小时后,此图是一个完美的可视化效果。
要在本地机器中获取数据,请转到“项目”部分,然后在右上角单击“导出”按钮。它将显示各种格式,如CSV、JSON、JSON行、XML。值得一提的是,这个功能非常有用,而且确实节省了很多时间。
使用ScrapingHub,只需部署spider并以首选格式下载,就可以在短短几天内收集大约数百万数据。
注: 刮取任何网页都不是合法活动。未经允许,不得进行任何刮削操作。