scrapy拒绝本地化URL

2024-04-24 04:07:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图拒绝本地化URL,如下所示:

rules = (
    Rule(LinkExtractor(deny=(r'\/es\/')), follow = True)
)

然而这失败了。尝试了下面的其他正则表达式,但没有运气。你知道吗

rules = (
    Rule(LinkExtractor(deny=(r'\/es\/*.*')), follow = True)
)

基本上我只对英文版的资源感兴趣。不是西班牙语版本,即:URL中有/es/。你知道吗

如何确保我没有爬行西班牙网址?你知道吗


Tags: 版本trueurles资源rule感兴趣rules
1条回答
网友
1楼 · 发布于 2024-04-24 04:07:37

像这样在spider中定义中间件

class MySpider(scrapy.Spider):
    name = "my_spider"  

    custom_settings = {
        'DOWNLOADER_MIDDLEWARES': {
            'project_root_path.MyMiddlewaresFile.MyMiddleware': 300,

        }
    }


    def start_requests(self):

        yield Request()

在你的MyMiddlewaresFile.py

class MyMiddleware(object):

    def process_request(self, request, spider):
        if "/en/" in request.url:
            pass #Do not do anything.

        else:
            #keep processing request
            return request

参见文档:https://doc.scrapy.org/en/latest/topics/downloader-middleware.html#scrapy.downloadermiddlewares.DownloaderMiddleware.process_request

相关问题 更多 >