首页 > 解决方案 > 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 链接。

编辑:响应内容不是文本错误是由于其他原因。

标签: pythonweb-scrapingscrapy

解决方案


问题是由于链接提取器中的拒绝扩展参数默认为此处给出的值: https : //github.com/scrapy/scrapy/blob/master/scrapy/linkextractors/init .py

他们将 css 列为禁止扩展。


推荐阅读