无法让Scrapy Crawlspider关注链接

时间:2012-09-29 17:10:36

标签: python regex screen-scraping web-scraping scrapy

我正在尝试让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。海登的代码也有所帮助,所以我给他答案了。

1 个答案:

答案 0 :(得分:1)

我认为allowrestrict_xpaths在传递给SgmlLinkExtractor时应该是同一类型(即列表或两个字符串)。大多数示例使用tuples

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

暂且不喜欢使用Egyptian Brackets来尝试跟踪我的论点。