使用 LinkExtactor Scrapy 提取链接时排除 CSS

问题描述 投票:0回答:1

我一直在进行 3 级深度爬行,我需要排除一些 CSS 类,例如页眉和页脚,我尝试将属性“restrict_css”与 :not("#header") 一起使用,但它不起作用并且

我不太确定使用 LinkExtractor 提取所有链接的最佳方法是什么

我尝试过: LinkExtractor(restrict_css=":not(#header)")

python scrapy
1个回答
0
投票

在Scrapy中,

restrict_css
中的
LinkExtractor
参数用于指定扫描页面的哪些部分寻找链接,而不是直接排除哪些部分。

但是,您可以通过两种方法有效排除某些区域:

1.更具体地说明您想要包含来自何处的链接。

与其尝试使用

:not(#header)
排除标题,直接包含您想要的区域会更直接。

如有必要,请使用多个选择器,并用逗号分隔。 这是一个示例,假设

.main-content
.sidebar
是您要包含的区域:

from scrapy.linkextractors import LinkExtractor

link_extractor = LinkExtractor(restrict_css=('.main-content', '.sidebar'))

2.通过使用
deny
参数来指定要从何处排除链接。

如果您仍然想尝试排除页眉和页脚,同时不太具体地了解包含区域,则可以尝试使用

deny
参数以及与页眉和页脚匹配的 XPath 表达式。

link_extractor = LinkExtractor(deny=(r'//*[@id="header"]', r'//*[@id="footer"]'))

在此示例中,deny 参数用于排除使用 XPath 在具有

id="header"
id="footer"
的元素中找到的任何链接。

确保根据目标网站的实际结构和风格调整选择器。

© www.soinside.com 2019 - 2024. All rights reserved.