我一直在进行 3 级深度爬行,我需要排除一些 CSS 类,例如页眉和页脚,我尝试将属性“restrict_css”与 :not("#header") 一起使用,但它不起作用并且
我不太确定使用 LinkExtractor 提取所有链接的最佳方法是什么
我尝试过: LinkExtractor(restrict_css=":not(#header)")
在Scrapy中,
restrict_css
中的LinkExtractor
参数用于指定扫描页面的哪些部分寻找链接,而不是直接排除哪些部分。
但是,您可以通过两种方法有效排除某些区域:
与其尝试使用
:not(#header)
排除标题,直接包含您想要的区域会更直接。
如有必要,请使用多个选择器,并用逗号分隔。 这是一个示例,假设
.main-content
和 .sidebar
是您要包含的区域:
from scrapy.linkextractors import LinkExtractor
link_extractor = LinkExtractor(restrict_css=('.main-content', '.sidebar'))
deny
参数来指定要从何处排除链接。如果您仍然想尝试排除页眉和页脚,同时不太具体地了解包含区域,则可以尝试使用
deny
参数以及与页眉和页脚匹配的 XPath 表达式。
link_extractor = LinkExtractor(deny=(r'//*[@id="header"]', r'//*[@id="footer"]'))
在此示例中,deny 参数用于排除使用 XPath 在具有
id="header"
和 id="footer"
的元素中找到的任何链接。
确保根据目标网站的实际结构和风格调整选择器。