正则表达式:从其他网站获取文本数据

时间:2010-10-06 20:19:43

标签: c# asp.net wcf iis

我想抓住其他公司网站,比如汽车,并在我的本地数据库中提取只读信息。然后我希望能够在我的网站上显示这些收集的信息。纯粹从技术角度来看,是否有一个.net工具,程序等已经足够通用于我的目的。或者我是否必须从头开始编写它?

为了有效地做到这一点,我可能需要一个WCF作业,它只是不断地挖掘数据并刷新数据库,然后数据库向网站提供数据。

另外,有没有办法屏蔽我对这些网站的电话?我会为目标网站制造“流量负担”吗?如果我只是无害地抓取它们会影响它们的功能吗?

如何让我的请求看起来像“人”而不是来自Crawler?

是否有关于如何使用解析DOM树的库的代码示例?

我可以向特定网站发送请求并使用WebBrowser控件获取DOM方面的响应吗?

5 个答案:

答案 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/