我目前正在使用C#中的HTML Agility Pack作为网络爬虫.到目前为止,我已经成功避免了许多问题(无效的URI,例如"/extra/url/to/base.html"和"#"链接),但我还需要处理PHP,Javascript等.网站,链接是PHP,当我的网页抓取工具尝试导航到这些链接时,它会失败.一个例子是PHP/Javascript手风琴链接页面.我将如何导航/解析这些链接?
让我们看看我是否正确理解了你的问题.我知道这个答案可能不够,但如果你需要一个更具体的答案,我需要更多细节.
您正在尝试对网络抓取工具进行编程,但它无法抓取以.php结尾的网址?
如果是这种情况,你需要退一步思考为什么会这样.这可能是因为爬虫根据URI方案选择使用正则表达式进行爬网的URL.
在大多数情况下,这些URL只是普通的HTML,但它们也可以是生成的图像(如验证码)或700mb iso文件的下载链接 - 如果没有检查HTTP响应的标头,就无法确定那个URL.
注意:如果您从头开始编写自己的爬虫,则需要很好地理解HTTP.
您的抓取工具在获取URL时将首先看到的是包含MIME内容类型的标头- 它告诉浏览器/抓取工具如何处理和打开数据(HTML,普通文本,.exe等) ).您可能希望基于MIME类型而不是URL方案下载页面.HTML的MIME类型是text/html
,您应该在下载URL的其余内容之前使用您正在使用的HTTP库来检查它.
Javascript问题
与上面相同,除了在爬虫/解析器中运行javascript对于简单项目来说非常罕见,并且可能产生比它解决的问题更多的问题.你为什么需要Javascript?
一个不同的解决方案
如果你愿意学习Python(或者已经知道它),我建议你看看Scrapy.它是一个类似于Django Web框架构建的Web爬行框架.它非常易于使用,并且已经解决了很多问题,因此如果您想要了解有关该技术的更多信息,这可能是一个很好的起点.