多线程网页刮板的最佳解决方案

本文关键字:最佳 解决方案 网页 多线程 | 更新日期: 2023-09-27 18:13:53

首先,我不需要代码,这样问是不礼貌的。我只需要知道达到这个目的的最好方法。我想做一个工具,可以下载每一个问题的照片答案。给出配置文件url的Fm配置文件。

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

第一个线程

选项A:这个线程应该从配置文件页面获得链接,并在List中推送它们。当它完成对页面的处理时,它模拟单击按钮("查看更多")并继续搜索其他链接,等等(没有页面2,AJAX脚本在单击该按钮时向页面添加元素)。

选项B:也许这个线程应该首先模拟大量的点击,直到按钮消失,当你已经达到了像一年前的答案。然后用一个foreach和一个Regex滤波器很容易得到所有的链接。但是有了这个选项,我就不会尽快得到链接,相反,我会在它的点击工作结束时得到它们,这需要时间,因为我认为你必须等待一些毫秒,以避免bug调用按钮太快。

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

    我应该使用一个单独的线程和所有这些List的东西下载第一个线程得到的所有链接,或者这是愚蠢的我找到链接后就可以下载了?那不是吗?内存太贵?我确信我至少需要一个异步线程。我不希望表单在脚本结束前冻结。但我不知道什么是最好的多线程选项。你有什么建议?
  1. 我应该使用Lists吗?自定义列表与OnAdd事件?数组?
  2. 最重要的是:你知道其他更好的方法来实现这一切吗?

提前谢谢你,Neflux

多线程网页刮板的最佳解决方案

  1. 你应该尽快得到所有的链接。如果你的目标永远不会改变。调频到别的东西,没有收到在处理过程中,所有链接都可能导致页面更改

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

  3. 我个人很喜欢System.Collections.Generic.List。我将

  4. 如果你想要一些开箱的东西,你可以看看KimonoPortia, import.io .

如果你想获得真正的智能,你可以模拟从ajax调用中推送的数据。使用Wireshark之类的工具来找出它。

主要是我没有名气,所以这里是我的一些经验,所以我回答。