如何在Scrapy中忽略URL引用



我正在使用Scrapy来抓取一个包含大量子级菜单的菜单的网站。问题是,我提取了多个URL,这些URL对应于网站中的同一项目/子项目。我提取它们,就好像它们是不同的项目一样,因为URL包含一个";ref=";部分例如:

https://thestore/category1/subitem/subsubitem_ABC/ref=asd_asd_1
https://thestore/category1/subitem/subsubitem_ABC/ref=asd_asd_2
https://thestore/category1/subitem/subsubitem_ABC/ref=asd_asd_3
https://thestore/category1/subitem/subsubitem_ABC/ref=asd_asd_4

所有这些URL都对应于网站中相同的ssubsubitem_ABC。相反,我只想提取一个对应于sububbitem_ABC 的URL

https://thestore/category1/subitem/subsubitem_ABC

通过这种方式,mi的目的是减少爬网程序的时间消耗,并避免相同子位、子项或项的重复URL。

到目前为止,我有以下规则:

rules = [
Rule(
LinkExtractor(
restrict_xpaths=['my_xpath"]//a',],
),
follow=True,
callback='parse_categories'
)
]

有什么可以添加到规则/LinkExtractor中以避免URL中的引用吗?

如果你只喜欢刮"https://thestore/category1/subitem/subsubitem_ABC/ref=asd_asd_1",您可以使用正则表达式而不是X_path。它可以是allow=r'https://thestore/category1/subitem/subsubitem_ABC/ref(.*?(1'。希望这能对你有所帮助。

最新更新