多线程网页刮板的最佳解决方案
本文关键字:最佳 解决方案 网页 多线程 | 更新日期: 2023-09-27 18:13:53
首先,我不需要代码,这样问是不礼貌的。我只需要知道达到这个目的的最好方法。我想做一个工具,可以下载每一个问题的照片答案。给出配置文件url的Fm配置文件。
我认为最好的解决方案是需要一个或两个异步线程,我还不确定。
第一个线程选项A:这个线程应该从配置文件页面获得链接,并在List
中推送它们。当它完成对页面的处理时,它模拟单击按钮("查看更多")并继续搜索其他链接,等等(没有页面2,AJAX脚本在单击该按钮时向页面添加元素)。
选项B:也许这个线程应该首先模拟大量的点击,直到按钮消失,当你已经达到了像一年前的答案。然后用一个foreach
和一个Regex
滤波器很容易得到所有的链接。但是有了这个选项,我就不会尽快得到链接,相反,我会在它的点击工作结束时得到它们,这需要时间,因为我认为你必须等待一些毫秒,以避免bug调用按钮太快。
使用OnAdd
事件制作自定义List
将允许处理来自第一个线程的每个链接,或者可能只是每5秒检查一次标准列表会更容易,我不知道。我甚至不知道我是否应该使用数组(我来自c++)。
- 我应该使用一个单独的线程和所有这些
- 我应该使用
Lists
吗?自定义列表与OnAdd
事件?数组? 最重要的是:你知道其他更好的方法来实现这一切吗?
List
的东西下载第一个线程得到的所有链接,或者这是愚蠢的我找到链接后就可以下载了?那不是吗?内存太贵?我确信我至少需要一个异步线程。我不希望表单在脚本结束前冻结。但我不知道什么是最好的多线程选项。你有什么建议?提前谢谢你,Neflux
-
你应该尽快得到所有的链接。如果你的目标永远不会改变。调频到别的东西,没有收到在处理过程中,所有链接都可能导致页面更改
-
你可以使用一个或两个后台工作者:
http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker (v = vs.110) . aspx -
我个人很喜欢
System.Collections.Generic.List
。我将 -
如果你想要一些开箱的东西,你可以看看
Kimono
,Portia
,import.io
.
如果你想获得真正的智能,你可以模拟从ajax调用中推送的数据。使用Wireshark之类的工具来找出它。
主要是我没有名气,所以这里是我的一些经验,所以我回答。