2011-08-23 61 views
0

我可以使用C#自动搜索网站,然后返回搜索结果吗?使用C#搜索多个网站

是否有一个网络爬虫,如果我给它一个顶级域名(例如:我告诉它在stackoverflow.com上找到“funny”这个词,它会告诉我所有的时间“有趣”出现了)?

这些网站允许通过他们的搜索栏进行搜索。

我需要网站合作来自动搜索吗?

注意:我只打算每天进行一两次搜索,所以我怀疑我会被阻止,或被要求对自己进行身份验证。

回答

2

如果您计划通过整个网站爬行来计算像这样的文字,如果您不缓存它,您将被阻止,您将基本上请求网站的每一页。也许考虑整合谷歌域搜索的呢?

这里是一个网上搜寻页详细介绍了如何用C#接口的链接

http://code.google.com/apis/gdata/client-cs.html

编辑:对不起,这是不完全正确:http://gsalib.codeplex.com/

http://answers.oreilly.com/topic/2165-how-to-search-google-and-bing-in-c/

1

...web sites allow searching via their search bar ... Can I use C# to auto search websites, then return the search results?

是的,如果网站提供了一个URL作为URL的查询字符串参数提供的搜索字词。

  http://yourTargetDomain?searchterm=foo 

但除非网站已专门从URL搜索结果是结构化的数据,该网站不会“告诉[你]所有的时候,‘搞笑’出现”,但会送你回去搜索适合浏览器显示的响应,因此您必须从HTML流中解析结果。

例如:

http://philadelphia.craigslist.org/search/tls?query=ladder&srchType=A&minAsk=&maxAsk=

+0

如果是这么简单,我不会需要帮助。 该网站分配一个搜索ID前。 “/SearchResults.aspx?searchID=00865caa-ed5c-46a1-b850-0450f102dda5&page=0&set=0&pageSize=100” 但是,我想要访问的页面只是一个标准网页。例如:“[很多其他不变的东西] RecID = 5358254” – wizlog

+0

@wizlog:我想你误会了我。我并不是说这很简单,而是我告诉你,这确实不像你希望的那么简单;搜索字词追加到查询字符串的这样的URL的结果是HTML标记流,而不仅仅是出现的列表。 – Tim

1

我会考虑建立一个RSS聚合。 RSS是标准化的,所以这可能是从各种来源收集搜索结果最可靠的方式。

编辑:对于不支持RSS

对于不支持RSS的网站的网站,你可以考虑使用一个屏幕刮刀。看看这篇文章的代码项目,让你开始:

http://www.codeproject.com/KB/aspnet/weather.aspx

+0

如果网站没有提供RSS源,该怎么办? – wizlog

+0

您可以使用屏幕抓取工具查看不支持RSS的网站。 –

+0

是的,但我仍然需要手动去每个网页并输入我的查询,对吧?我将搜索50个独立的站点,这就是为什么我正在寻找一种方法使其更快。 – wizlog