python - Scrapy 无法抓取链接的 .css 文件
问题描述
我有一个广泛的爬虫,它遍历所有页面,使用链接提取器提取链接并继续。但是,我还想抓取所有链接的 css 和 js 文档,所以我编写了单独的规则来处理 js、css 和正常链接,如下所示:
rules = [
# rule to process most links
Rule(
LinkExtractor(
canonicalize=True,
unique=True,
),
follow=True,
callback="parse_items",
process_links='filter_links',
),
# rule to process css links
Rule(
LinkExtractor(
unique=True,
tags=['link'],
attrs=['href'],
process_value=process_css
),
follow=True,
callback='parse_items',
process_links='filter_resources'
),
# Rule to find js links
Rule(
LinkExtractor(
unique=True,
tags=['script'],
attrs=['src'],
),
follow=True,
callback='parse_items',
process_links='filter_resources'
)
]
process_css 函数只打印通过的任何内容。使用此设置,我可以抓取和访问所有 js 文件及其内容,但不能访问 css 文件。具体来说,这些规则发现 css 和 js 链接没有问题,但我认为没有遵循 css 链接。
编辑:响应内容不是文本错误是由于其他原因。
解决方案
问题是由于链接提取器中的拒绝扩展参数默认为此处给出的值: https : //github.com/scrapy/scrapy/blob/master/scrapy/linkextractors/init .py
他们将 css 列为禁止扩展。
推荐阅读
- selenium-webdriver - 使用页面工厂初始化 web 元素时出现空指针异常
- node.js - 获取孩子的价值
- python - pygame:ValueError:解包的值太多(预期 2)
- html - 如何使用输入根据上传的图像更改画布分辨率?
- r - 访问列表 R 中矩阵的相同元素
- python - 如何从 setup.py 中读取来自 pyproject.toml 的项目依赖项,以避免在两个文件中重复信息?
- java - 在 android studio 上运行模拟器的问题/错误
- amazon-web-services - 如何获取 CloudFormation 堆栈下的资源总数?
- json - 在 Postgresql 中从 JSON 中获取数据
- python - Sympy Sum() 的问题