Tag: web crawler

如何在我的应用程序(网络或控制台)中进行类似谷歌的重新抓取

如何在我的应用程序(Web或控制台)中进行类似Google的重新抓取。 我只需要重新抓取那些在特定日期之后更新的页面。 System.Net.WebResponse中的LastModified标头仅提供服务器的当前日期。 例如,如果我在2012年1月27日下载了一个带有HTTPWebRequest的页面,并检查LastModified日期的标题,则显示服务页面时服务器的当前时间。 在这种情况下,它只是2012年1月27日。 谁能建议任何其他方法?

.NET没有可靠的异步套接字通信?

我曾经在.NET中写过一个Crawler。 为了提高其可伸缩性,我尝试利用.NET的异步API。 System.Net.HttpWebRequest具有异步API BeginGetResponse / EndGetResponse。 但是,这对API只是为了获取HTTP响应头和Stream实例,我们可以从中提取HTTP响应内容。 所以,我的策略是使用BeginGetResponse / EndGetResponse来异步获取响应Stream,然后使用BeginRead / EndRead从响应Stream实例异步获取字节。 在Crawler进行压力测试之前,一切看起来都很完美。 在压力测试下,Crawler遭受高内存使用。 我用WinDbg + SoS检查了内存,并说明System.Threading.OverlappedData实例有很多字节数组。 经过一些互联网搜索后,我从微软发现了这个KB http://support.microsoft.com/kb/947862 。 根据KB,异步I / O的数量应该具有“上限”,但它不会告诉“建议的”绑定值。 所以,在我看来,这个KB没有任何帮助。 这显然是一个.NET错误。 最后,我不得不放弃从响应Stream中异步提取字节的想法,并且只是以同步方式进行。 允许带有点网络套接字的异步IO的.NET库(Socket.BeginSend / Socket.BeginReceive / NetworkStream.BeginRead / NetworkStream.BeginWrite)必须具有其异步IO的未完成缓冲区(发送或接收)数量的上限。 网络应用程序应该具有其发布的未完成异步IO数量的上限。 编辑:添加一些问号。 任何人都有在Socket和NetworkStream上进行异步I / O的经验吗? 一般来说,生产中的爬虫是否通过同步或异步的互联网进行I / O操作?

Asp.net Request.Browser.Crawler – 动态爬虫列表?

我在C#中了解了为什么Request.Browser.Crawler始终为假( http://www.digcode.com/default.aspx?page=ed51cde3-d979-4daf-afae-fa6192562ea9&article=bc3a7a4f-f53e-4f88-8e9c-c9337f6c05a0 ) 。 有没有人使用某种方法来动态更新Crawler的列表,所以Request.Browser.Crawler会非常有用吗?

C#中的简单网络爬虫

我已经创建了一个简单的网络爬虫,但我想添加递归函数,以便打开的每个页面都可以获取此页面中的url,但我不知道我该怎么做,我还想包含线程来制作它在这里更快,这是我的代码 namespace Crawler { public partial class Form1 : Form { String Rstring; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { WebRequest myWebRequest; WebResponse myWebResponse; String URL = textBox1.Text; myWebRequest = WebRequest.Create(URL); myWebResponse = myWebRequest.GetResponse();//Returns a response from an Internet resource Stream streamResponse = myWebResponse.GetResponseStream();//return the data stream from the internet […]

HTTPWebResponse + StreamReader非常慢

我正在尝试使用HttpWebResponse.GetResponse()和Streamreader.ReadToEnd()在C#中实现有限的Web爬虫(仅限几百个站点),也尝试使用StreamReader.Read()和循环来构建我的HTML字符串。 我只下载大约5-10K的页面。 一切都很慢! 例如,平均GetResponse()时间约为半秒,而平均StreamREader.ReadToEnd()时间约为5秒! 所有站点应该非常快,因为它们非常靠近我的位置,并且具有快速的服务器。 (在资源管理器中几乎没有任何东西到D / L),我没有使用任何代理。 我的Crawler有大约20个线程同时从同一站点读取。 这会导致问题吗? 如何减少StreamReader.ReadToEnd DRASTICALLY?

我需要一个强大的Web Scraper库

我需要一个强大的Web scraper库来从web挖掘内容。 可以支付或免费两者对我来说都没问题。 请建议我使用库或更好的方法来挖掘数据并存储在我的首选数据库中。 我搜索过,但我没有找到任何好的解决方案。 我需要专家的好建议。 请帮帮我。

从网页中提取数据,解析特定部分并显示它

我已经使用这个网站很长时间来找到我的问题的答案,但我无法找到这个问题的答案。 我正在与一个class级项目的小组合作。 我们要建立一个小型的“游戏交易”网站,允许人们注册,投入他们想要交易的游戏,接受他人交易或要求交易。 我们的网站function提前很长时间,因此我们尝试向网站添加更多内容。 我想做的一件事就是把投入的游戏与Metacritic联系起来。 这就是我需要做的。 我需要(在visual studio 2012中使用asp和c#)获得metacritic的正确游戏页面,拉取其数据,解析特定部分,然后在我们的页面上显示数据。 基本上当你选择想要交易的游戏时,我们想要一个小的div来显示游戏的信息和评级。 我想这样做是为了了解更多信息并从这个项目中获得一些我不必从头开始的东西。 我想知道是否有人能告诉我从哪里开始。 我不知道如何从页面中提取数据。 我仍然想弄清楚我是否需​​要尝试写一些东西来自动搜索游戏的标题并找到那样的页面,或者我是否能找到某种方式直接进入游戏页面。 一旦我获得了数据,我就不知道如何从中获取我需要的具体信息。 其中一个不容易做到的事情就是我正在学习c ++以及c#和asp,所以我不断将电线交叉。 如果有人能指出我正确的方向,那将是一个很大的帮助。 谢谢