【问题标题】:Why does linkextractor skip link?为什么链接提取器会跳过链接?
【发布时间】:2021-04-17 13:14:42
【问题描述】:

我正在抓取一些页面并尝试使用 LinkExtractor 从响应中获取 URL。一般来说,这一切都很好,但 LinkExtractor 无法提取到在html 的第 111 行找到的 pdf 文件的相对链接

我已经尝试了很多,但无法弄清楚链接提取器如何以及何时删除相关链接,以及提取器是否应该这样工作

scrapy shell "https://www.limburg.nl/algemeen/zoeken/?mode=zoek&ajax=true&zoeken_sortering=Num&pager_page=4"
from scrapy.linkextractors import IGNORED_EXTENSIONS
skip_extensions = list(set(IGNORED_EXTENSIONS) - set("pdf")) + ["gz","txt","csv","cls","and","bib","xml","dat","dpr","cfg","bdsproj","dproj","local","tvsconfig","res","dsk"]
extractor = LinkExtractor(deny_extensions=skip_extensions)
extractor.extract_links(response)   

【问题讨论】:

  • set("pdf") 这是一组单个字母 pdf。我想你的意思是set(["pdf"])
  • @John Gordon 非常感谢,完全忽略了这一点。如果您将此作为答案发布,我可以接受

标签: python web-scraping hyperlink scrapy


【解决方案1】:

set() 将序列作为参数,并为序列中的每个项目创建一组。字符串是单个字符的序列,因此 set("pdf") 生成一组字符 p d f

如果你想要集合中的整个字符串“pdf”,那么你需要将它包含在一个列表中:

set(["pdf"])

或者使用{} 表示法而不是调用set() 可能更简单:

{"pdf"}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-04
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    相关资源
    最近更新 更多