xiaoxiaosuaxuan / newscrapy

newscrapy
1 stars 6 forks source link

每期版面和单个新闻url形式相同 #22

Open Apandada opened 1 year ago

Apandada commented 1 year ago

https://xjrb.ts.cn/xjrb/20220912/2.html

xiaoxiaosuaxuan commented 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)