我在一家处理网络钓鱼和虚假Facebook帐户的公司工作。我想表达我对'#34;使命"的奉献精神。我们无法被动地监控Facebook页面被删除的时间。我正在考虑一个网络爬虫,但我很好奇如何设计一个不断检查特定链接,看看Facebook页面是否仍然活跃?我希望这有道理吗?
答案 0 :(得分:1)
是的!您可以使用抓取功能。但是,如果您希望它尽可能快,爬行可能不是最好的方法。如果您对此感兴趣,我将使用HTTPConnection进行此操作。不幸的是,链接必须完全损坏。
如果您需要更多信息,那么您很可能必须使用API或网络抓取工具来检查链接是否已损坏(因此意味着它必须链接到无处),
from http.client import HTTPConnection # Importing HTTPConnection from http.client.
conn = HTTPConnection('www.google.com') # Connecting to 'google.com'
conn.request('HEAD', '/index.html') # Request data.
res = conn.getresponse() # Now we get the data sent back.
print(res.status, res.reason) # Finally print it.
如果它返回'302 Found'那么它应该是一个活动的网页, 我希望这有帮助!如果这不是你想要的,请告诉我。 :)
谢谢,
〜Coolq
答案 1 :(得分:0)
您可以通过响应状态发送http请求以告知帐户是否处于活动状态,Python有一些标准库,您可以查看Internet Protocols and Support。 就个人而言,我会建议使用请求:
import requests
response = requests.get("http://facebook.com/account")
if response.status_code == 302: # or 404
# the page is missing
如果你真的关心速度或性能,你应该在Python中使用多处理或异步i / o(如gevent)。
如果您专注于抓取,可以查看Scrapy
在这里你会注意到Scrapy的一个主要优点:请求是 异步调度和处理。这意味着Scrapy没有 需要等待请求完成和处理,它可以发送 在此期间另一个请求或做其他事情。这也意味着 即使某些请求失败或其他请求,其他请求仍可继续 处理时发生错误。
答案 2 :(得分:0)
https://www.quora.com/How-can-I-build-a-web-crawler-from-scratch/answer/Raghavendran-Balu 我读过关于爬行者的最好的文章之一。
网络抓取工具可能听起来像一个简单的fetch-parse-append系统,但请注意!你可能会看到复杂性。我可能会偏离问题意图,更多地关注架构而不是特定于实现。我认为这是必要的,因为,为了构建Web规模的爬虫,爬虫的架构比选择语言/框架更重要。
<强>架构:强>
最小的爬虫至少需要这些组件:
HTTP Fetcher:从服务器检索网页。
提取器:最少支持从页面中提取URL,如锚链接。
Duplicate Eliminator:确保无意中提取相同内容两次。将其视为基于集合的数据结构。
URL Frontier:优先处理必须提取和解析的URL。将其视为优先级队列
数据存储:存储检索页面和URL以及其他元数据。
了解架构的一个很好的起点是:
编程语言:任何您熟悉的具有良好网络库的高级语言都可以。我个人更喜欢Python / Java。由于您的爬虫项目可能会在代码大小方面增长,因此如果您使用受设计限制的编程语言进行开发,则很难管理。虽然可以仅使用unix命令和shell脚本构建爬虫,但出于显而易见的原因,您可能不希望这样做。
框架/库:其他答案中已经提出了许多框架。我将在这里总结一下:
Scrapy(Python):技术上是一个刮刀,但可以用来构建一个爬虫。
您还可以访问https://github.com/scrapinghub/distributed-frontera - Scrapy的网址前端和数据存储空间,以便您进行大规模抓取。
对于Python:请参阅Introduction to web-crawling in Python
Python中的代码:https://www.quora.com/How-can-I-build-a-web-crawler-from-scratch/answer/Rishi-Giri-1
可扩展分布式抓取的建议:
有关详细信息,请访问:https://www.quora.com/How-can-I-build-a-web-crawler-from-scratch
<强>参考强>:
Olston,C。,&amp; Najork,M。(2010)。网页抓取。信息检索的基础和趋势,4(3),175-246。
Pant,G.,Srinivasan,P。,&amp; Menczer,F。(2004)。抓取网络。在Web Dynamics中(第153-177页)。施普林格柏林海德堡。
Heydon,A。,&amp; Najork,M。(1999)。 Mercator:可扩展,可扩展的网络爬虫。万维网,2(4),219-229。
Boldi,P.,Codenotti,B.,Santini,M。,&amp; Vigna,S。(2004)。 Ubicrawler:可扩展的完全分布式网络爬虫。软件:实践与经验,34(8),711-726。
Lee,H。T.,Leonard,D.,Wang,X。,&amp; Loguinov,D。(2009)。 IRLbot:扩展到60亿页甚至更多。网上ACM交易(TWEB),3(3),8。
Harth,A.,Umbrich,J。,&amp; Decker,S。(2006)。 Multicrawler:用于对语义Web数据进行爬网和索引的流水线架构。在语义网 - ISWC 2006(第258-271页)中。施普林格柏林海德堡。