.NET(C#)中Web爬网的模式和实践


9

我将整理一个应用程序以自动化外部网站/应用程序。在某些情况下,我需要像用户那样浏览网站(我需要关注的某些链接无法预测,因此必须从响应中进行解析)

我已经在使用Html Agility Pack了,如果需要的话,我也知道Tidy

还有其他我应该注意的技术吗?

是否有建议的模式可以在外部Web应用程序发生更改时快速进行调整?我设想将响应的验证封装为某种类型的策略或类似的模式,可以根据需要轻松地将其分离/插入,但是任何特定的建议都很好。


关于它,是否有任何分步指南或《入门-快速入门》可以在15到20分钟内完成?我为您提供了一个很好的分步指南示例,例如berniecook.wordpress.com/2013/01/13/…。在开始之前,我想快速介绍一些假设:安装(必要条件,所需工具),配置,快速运行。目标将是“准备就绪”示例。也许是一个更好的实际应用示例。
Kiquenet 2014年

Answers:


4

如果您希望像用户一样自动化外部网站的导航,那么Watin就是您的理想选择。它将通过对象模型驱动Web浏览器,并具有基于DOM的广泛解析功能(以及在浏览器中可以找到的非DOM功能,包括脚本)。

这里是一个链接:

Watin.org


Watin就像您最喜欢的C#JavaScript库一样。
松饼人

完整的源代码示例应用程序的最终解决方案吗?恕我直言,更好的示例,以最大限度地减少学习曲线是具有完整的源代码和良好的模式和实践的实际应用
Kiquenet 2014年

0

如果您正在寻找能够快速进行更改以跟踪外部Web应用程序中的内容的功能,那么我将研究脚本。如果您选择C#语言,那么请随时查看编译代码。如果您使用的是数据库,则脚本代码可以存储在此处,否则,纯文本文件也可以使用。

对于GoF模式,策略是教科书的选择。

另一个要考虑的“模式”是有限状态机,特别是因为您提到使用它们来选择下一个动作来验证响应。例如,Web电子邮件客户端的状态可以是“未登录”,“收件箱”,“阅读邮件”,“编辑回复”等。您将根据状态执行一些操作,然后根据响应,选择下一个状态。


0

模式确实应该源于问题,但是这里有一些选择:

如果您主要关注持续的开发成本/烦恼:策略模式(已经提到)-使用它来实现组件级接口,并使用动态绑定方法来解决特定的策略(实现)。IOC容器(这些天我很喜欢Autofac)可以很好地工作。

如果需要上述支持,还需要扩展:Map Reduce(是否有人知道.net的m + r fx不错?)。


-1

根据网页的更改量,这可能很困难。您可以在数据库中保留一列标准正则表达式,然后当一个正则表达式不再起作用时,您可以与其他对象循环遍历该基本集,直到命中一个。然后,您需要将其标记为将来使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.