我正在尝试让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
中定义的页面。
答案 0 :(得分:1)
我认为allow
和restrict_xpaths
在传递给SgmlLinkExtractor时应该是同一类型(即列表或两个字符串)。大多数示例使用tuples
:
rules = (
Rule(SgmlLinkExtractor( allow = (r'.*',),
restrict_xpaths = ('//*[@class="course_detail"]//td[4]/a/@href',)
),
callback='parse_item'
),
)
暂且不喜欢使用Egyptian Brackets来尝试跟踪我的论点。