Scrapy在第一页上没有抓取,规则跟随下一页

时间:2013-04-24 07:54:40

标签: python scrapy rule web-crawler


我用递归规则做了一个蜘蛛,按照下一页的链接。它工作正常。
蜘蛛抓取所有页面(999),但“start_urls”中定义的第一页除外。 有人遇到过这个问题吗?

示例代码:

class example(CrawlSpider):
    name = "example"
    allowed_domains = ["example.ndd"]
    start_urls = ["http://example.ndd/startnum=1"] #first page  

    rules = (Rule(SgmlLinkExtractor(allow=("nextPage\.htm", ),
                            restrict_xpaths=('//div[@class="paging"]/p[@class="nav"]',)), 
                            callback="parse_items", follow= True),)

    def parse_items(self, response):
        hxs = HtmlXPathSelector(response)
        links= hxs.select('//td[@class="desc"]/h3/a/@href').extract()
        list = []
        for link in links:
            yield link
        return

编辑:搜索后,抓取工具会直接跟踪规则的限制路径的结果。同样如果从startnum = 1开始,它会抓取startnum = 11,它位于startnum = 1的页面内。
我不知道如何解决这个问题。

2 个答案:

答案 0 :(得分:6)

您需要使用:def parse_start_url(self, response):

请参阅此答案:Scrapy CrawlSpider doesn't crawl the first landing page

答案 1 :(得分:0)

你的意思是你想要抓取start_urls并将其提取出来以及其他页面吗?

CrawlSpider不会从start_urls中提取项目。如果您愿意,请重载解析方法。