Scrapy 如何忽略带有查询字符串的URL(?xxx=xxx)

Scrapy 如何忽略带有查询字符串的URL(?xxx=xxx),scrapy,scrapy-spider,Scrapy,Scrapy Spider,我希望我的爬行器忽略任何具有查询字符串的URL。我曾尝试在LinkedExtractor(见下文)中的拒绝规则(用于\?)中添加一个表达式,但它被忽略了。我的爬行器仍在爬行/提取包含?字符的URL 我只有一个起始URL,它是我的域的根,所以抓取链接的唯一方法是通过LinkExtractor 这是爬行蜘蛛实现中的唯一规则 Rule(LinkExtractor( allow=(), deny=(':443', ':80', '\?', )),

我希望我的爬行器忽略任何具有查询字符串的URL。我曾尝试在LinkedExtractor(见下文)中的拒绝规则(用于
\?
)中添加一个表达式,但它被忽略了。我的爬行器仍在爬行/提取包含
字符的URL

我只有一个起始URL,它是我的域的根,所以抓取链接的唯一方法是通过LinkExtractor

这是爬行蜘蛛实现中的唯一规则

Rule(LinkExtractor(
            allow=(), 
            deny=(':443', ':80', '\?', )), 
            callback='parse_page', 
            follow=True),
)
将排除包含端口号的URL,但仍将包括任何包含
的URL

不要讨论这个特定的用例——至少我找不到它

有人知道如何从提取中排除包含查询字符串的URL吗

我正在使用Scrapy 1.4.0

更新

出于某种原因,scrapy似乎忽略了LinkExtractor定义的
deny
属性中包含
字符的任何表达式。不过,我有一种过滤链接的替代方法

Rule(LinkExtractor(
            allow=(), 
            deny=(':443', ':80', )),
            process_links='filter_links', 
            callback='parse_page', 
            follow=True),

    def filter_links(self, links):
        for link in links:
            if '?' in link.url:
                continue
            else:
                yield link

在deny
https?:/(?:[^/]+/?)+\?.*
中尝试此模式,看看是否有效谢谢您的评论。不幸的是,当我尝试使用该拒绝规则运行爬网时,scrapy挂起。那么
*\?.
Ye呢,我已经尝试过了,并且尝试了另外10种不同的表达式。出于某种原因,scrapy似乎忽略了任何包含
的表达式。我找到了一种使用过滤函数的替代方法-请参阅更新。谢谢你抽出时间。