Open Apandada opened 1 year ago
形式相同是不影响的。你可以在对应的规则中,加入限定区域 restrict_xpaths 。这个区域是用来限定爬取的url必须是某个xpath形式节点的子孙节点。
例如,版面目录对应的节点在 <div id="bm_ll">
. 文章目录对应的节点是 <div id="article_ll">
。所以对应的规则可以这样写:
rules = (
Rule(LinkExtractor(allow=('xjrb/\d+/\d+.html'), restrict_xpaths="//div[@id='bm_ll']")),
Rule(LinkExtractor(allow=('xjrb./\d/\d+.html'), restrict_xpaths="//div[@id='article_ll']"), callback="parse_item")
)
这样即使对应规则提取的url形式相同,因为所在区域的不同,只有文章对应的url会被回调函数处理。 (以上代码没有跑过,但解决思路是这样。此外,如果方便,建议在写 Rule 时都加上 restrict_xpaths)
https://xjrb.ts.cn/xjrb/20220912/2.html