多线程网络刮刀的最佳解决方案?

时间:2014-07-22 01:20:48

标签: c# regex multithreading list webbrowser-control

首先,我不需要代码,请问是不礼貌的。我只需要知道实现这一目标的最佳方法。我正在尝试制作一个工具,根据配置文件的网址下载Ask.Fm配置文件的每个可能的照片答案。

我认为最好的解决方案需要一个或两个异步线程,我还不确定。

第一个帖子

选项A:此主题应从个人资料页面获取链接并将其推送到List。完成处理页面后,它会模拟按钮单击(“查看更多”)并继续搜索其他链接,依此类推(没有第2页,当您单击该按钮时,AJAX脚本会向页面添加元素)。

选项B:也许这个帖子应该首先模仿大量的点击,直到按钮消失,当你达到一年的答案时。然后使用单个foreachRegex过滤器,可以轻松获取所有链接。但是使用这个选项我不会尽快拥有链接,而是我会在它的点击工作结束时全部获取它们,这需要时间,因为我认为你必须等待几毫秒才能避免错误调用按钮快。

使用List事件制作自定义OnAdd将允许处理来自第一个帖子的每个链接,或者可能只需每隔5秒检查一次标准列表会更容易,我不会不知道。我甚至不知道我是否应该使用数组(我来自C ++)。

  1. 我应该使用单独的线程和所有这个List的东西来下载 第一个线程获得的所有链接,或者这是愚蠢的 我找到链接后可以立即下载?不会那样 太记忆贵吗?
  2. 我确定至少需要一个异步线程。我不希望表单冻结直到脚本结束。但我不知道什么是最好的多线程选项。你有什么建议?
  3. 我应该使用Lists吗?包含OnAdd个活动的自定义列表?阵列?
  4. 最重要的是:你知道其他更好的方法吗?
  5. 先谢谢你,Neflux。

1 个答案:

答案 0 :(得分:1)

  1. 您应该尽可能快地获取所有链接。如果 你的目标从ask.fm变为别的东西,而不是得到 在处理时,所有链接都可能导致页面更改 您的链接可能会导致重复和其他问题。

  2. 您可以使用一个或两个后台工作人员:
    http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker(v=vs.110).aspx

  3. 我个人喜欢System.Collections.Generic.List。我会 不要做必要的活动,但这取决于你。

  4. 如果您想要开箱即用的东西,可以查看KimonoPortiaimport.io

  5. 如果你想变得非常聪明,你可以模仿从他们的ajax调用中推送的数据。使用像 Wireshark 这样的东西来解决它。

    主要是我没有声誉所以这里有一些经验,所以我回答了。