【问题标题】:Can't get Scrapy Crawlspider to follow links无法让 Scrapy Crawlspider 跟随链接
【发布时间】:2012-09-21 04:54:10
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    顺便说一句,喜欢使用Egyptian Brackets 来尝试跟踪我的论点。

    【讨论】:

    • 感谢海登的回复!不幸的是,我仍然遇到同样的问题:(
    猜你喜欢
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    相关资源
    最近更新 更多