0

我正在尝试让 Scrapy Crawlspider 的“规则”部分正常工作。

我找到了xpath返回我想要关注的链接。它是

//*[@class="course_detail"]//td[4]/a/@href

它总共返回大约 2700 个 URL。

基本上,我试图告诉蜘蛛遵循与该匹配的所有内容xpath,但我无法让以下代码正常工作:

rules = (
    Rule(SgmlLinkExtractor( allow=[r'.*'],
                            restrict_xpaths='//*[@class="course_detail"]//td[4]/a/@href'
                           ),              
         callback='parse_item'
         ),
)

我没有收到任何错误,但蜘蛛似乎没有越过我在start_urls.

编辑:想通了!只需要删除@href。海登的代码也有帮助,所以我要给他答案。

4

1 回答 1

1

当传递给SgmlLinkExtractor时,我认为allow并且restrict_xpaths应该是相同的类型(即两个列表或两个字符串)。大多数示例使用:tuples

rules = (
    Rule(SgmlLinkExtractor( allow = (r'.*',),
                            restrict_xpaths = ('//*[@class="course_detail"]//td[4]/a/@href',)
                           ),              
         callback='parse_item'
         ),
)

顺便说一句,喜欢使用埃及括号来尝试跟踪我的论点。

于 2012-09-29T21:29:50.633 回答