c# - 网络爬虫解析 PHP/Javascript 链接?

标签 c# web-crawler

我目前正在使用 C# 中的 HTML Agility Pack 进行网络爬虫。到目前为止,我已经设法避免了许多问题(无效的 URI,例如“/extra/url/to/base.html”和“#”链接),但我还需要处理 PHP、Javascript 等。就像一些网站,链接是用 PHP 编写的,当我的网络爬虫试图导航到这些网站时,它失败了。一个示例是 PHP/Javascript Accordion 链接页面。我将如何导航/解析这些链接?

最佳答案

让我们看看我是否正确理解了您的问题。我知道这个答案可能不够充分,但如果您需要更具体的答案,我需要更多详细信息。


您正在尝试编写网络爬虫程序,但它无法爬取以 .php 结尾的 URL?

如果是这种情况,您需要退后一步,想想为什么会这样。这可能是因为爬虫使用基于 URI 方案的正则表达式选择要爬取的 URL。

在大多数情况下,这些 URL 只是普通的 HTML,但它们也可能是生成的图像(如验证码)或 700mb iso 文件的下载链接 - 如果不检查标题,就无法确定来自该 URL 的 HTTP 响应。

注意:如果您要从头开始编写自己的爬虫程序,则需要很好地理解 HTTP .

当您的爬虫获取 URL 时,首先要看到的是 header ,其中包含 MIME content-type - 它告诉浏览器/爬虫如何处理和打开数据(是 HTML、普通文本、.exe 等)。您可能希望根据 MIME 类型而不是 URL 方案下载页面。 HTML 的 MIME 类型是 text/html,您应该在下载 URL 的其余内容之前使用您正在使用的 HTTP 库检查它。


Javascript 问题

除了在爬虫/解析器中运行 javascript 对于简单的项目来说是非常不常见的,并且可能会产生比它解决的问题更多的问题,这与上面相同。为什么需要 Javascript?


不同的解决方案
如果你愿意学习Python (或者已经知道了)我建议你看看Scrapy .它是一个类似于 Django web framework 的网络爬虫框架。 .它真的很容易使用,并且已经解决了很多问题,所以如果您想了解更多有关该技术的信息,它可能是一个很好的起点。

关于c# - 网络爬虫解析 PHP/Javascript 链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2296465/

相关文章:

python - 获取需要用户交互的页面

c# - C#Dictionary.ContainsKey()始终返回false

c# - 使用 LINQ 时,&& 和多个 where 子句有什么区别?

c# - 返回 null 或空集合更好吗?

python - 获取selenium中具有相同类名的所有值

symfony - 如何安全地检查节点是否为空? (Symfony 2 爬虫)

c# - Silverlight 4 应用程序在发布版本中显示空白页面

c# - 任何文化中没有小数点、点或逗号的十进制字符串

java - 运行网站爬虫

web-crawler - 如何最好地开发网络爬虫