python - 过滤掉 Python Mechanize 网络爬虫的图像/文件链接

标签 python url web-crawler html-parsing mechanize

我正在使用 mechanize 编写一个简单的 Python 网络爬虫图书馆。

现在,我只想执行以下操作:

  • 接受 startURL 列表作为输入
  • 对于 startURLs 中的每个 URL,抓取页面上的所有链接
  • 然后,对每个链接执行 HTTP 请求,并从中获取所有链接...
  • 从 startURL 到指定深度重复此操作。

  • 所以我的问题是,当它在第 3 步时,我希望它跳过下载指向图像文件的任何链接(所以如果有一个 URL http://www.example.com/kittens.jpg)然后我希望它不要将它添加到 URL 列表中拿来。

    显然,我可以通过使用正则表达式来匹配 URL 路径中的各种文件扩展名来做到这一点,但我想知道是否有更简洁的方法来确定 URL 是否指向图像文件,而不是 HTML 文档。是否有某种库函数(在 Mechanize 或其他库中)可以让我这样做?

    最佳答案

    您建议的在 url 上使用正则表达式的方法可能是执行此操作的最佳方法,确定 url 指向什么的唯一方法是向服务器发出请求并检查 Content-Type header响应以查看它是否以' image/ 开头'。

    如果你不介意额外的服务器请求的开销,那么你应该发送一个 HEAD request用于资源而不是通常的 GET请求 - 这将导致服务器返回有关资源的信息(包括其内容类型)而不实际返回文件本身,从而为您节省一些带宽。

    关于python - 过滤掉 Python Mechanize 网络爬虫的图像/文件链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32265895/

    相关文章:

    python - 根据多个值将矩阵划分为更小的矩阵

    Python 3.3.3 : TypeError: list indices must be integers, 不 float

    java - 将 map 中的参数添加到 URL 标记

    javascript - 扩展 RegExp 以获取文件扩展名

    ios - 如何从 iOS 中的 Url 获取特定值 - Swift 3

    php - GNU Parallel 从网页运行

    python - 如何在 Python 中以编程方式传递密码

    python - 如何在 Django 中创建由 ManyToManyField 创建的模型的实例对象

    php - 如何区分 Google Bot 访问和 Bing Bot 访问

    java - 使用 Java 的网页索引器