我想抓住其他公司网站,比如汽车,并在我的本地数据库中提取只读信息。然后我希望能够在我的网站上显示这些收集的信息。纯粹从技术角度来看,是否有一个.net工具,程序等已经足够通用于我的目的。或者我是否必须从头开始编写它?
为了有效地做到这一点,我可能需要一个WCF作业,它只是不断地挖掘数据并刷新数据库,然后数据库向网站提供数据。
另外,有没有办法屏蔽我对这些网站的电话?我会为目标网站制造“流量负担”吗?如果我只是无害地抓取它们会影响它们的功能吗?
如何让我的请求看起来像“人”而不是来自Crawler?
是否有关于如何使用解析DOM树的库的代码示例?
我可以向特定网站发送请求并使用WebBrowser控件获取DOM方面的响应吗?
答案 0 :(得分:1)
使用HtmlAgilityPack解析HTML。然后使用Windows服务(而不是WCF)来运行长时间运行的进程。
答案 1 :(得分:0)
我不知道你如何影响目标网站,但是一种生成类似人类流量的好方法是WinForms浏览器控件。我已经用了几次从维基百科中获取东西,因为我使用HttpWebRequest执行HTTP的正常模式在那里被标记为非人类过滤器而且我被阻止了。
答案 2 :(得分:0)
就影响目标网站而言,它完全取决于网站。如果你足够快地抓取stackoverflow足够的时间,他们将禁止你的IP。如果你对谷歌做同样的事情,他们会开始要求你回答验证码。大多数网站都有速率限制器,因此您只能经常询问请求。
至于从页面中抓取数据,永远不要使用正则表达式,它一遍又一遍地说。您应该使用一个解析DOM树的库,或者根据需要使用自己的库。在我之前的创业公司中,我们处理问题的方式是我们编写了一种中间模板语言,它可以告诉我们的刮刀在页面上的数据位置,以便我们知道我们提取的数据和数据类型。您将发现的困难部分是不断变化和变化的数据。一旦你的解析器工作,它需要不断的工作,让它在同一个站点上继续工作。
答案 3 :(得分:0)
我使用了一个非常灵活的工具Visual Web Ripper。输出到Excel,SQL,文本。输入来自同一个。
答案 4 :(得分:0)
没有通用工具可以为您提取Web上的数据。这不是一个微不足道的操作。一般来说,抓取页面并不困难。但是,剥离/提取所需内容很困难。必须为每个网站定制此操作。
我们使用专门用于此的专业工具,它们旨在为Crawler提供有关网页中哪些区域提取所需数据的说明。
我还看到Perl Scripts设计了特定网页的提取数据。根据您解析的网站,它们可能非常有效。
如果您过于频繁地访问某个网站,您将被禁止(至少暂时)。
要掩盖您的IP,您可以尝试http://proxify.com/