0


我正在用刮刀创建一个爬虫。
我的蜘蛛必须转到包含链接列表和下一页链接的起始页。
然后,它必须跟随每个链接,转到此链接,获取信息并返回主页。
最后,当蜘蛛跟随页面的每个链接时,它会转到下一页并重新开始。

        class jiwire(CrawlSpider):
        name = "example"
        allowed_domains = ["example.ndd"]
            start_urls = ["page.example.ndd"]   

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

        def parse_items(self, response):
                hxs = HtmlXPathSelector(response)
                links = hxs.select('//td[@class="desc"]')
                for link in links :
                    link = title.select("h3/a/@href").extract()
                    request = Request("http://v4.jiwire.com/" + str(name), callback=self.parse_sub)
                    return(request)


        def parse_sub(self, response):
            hxs = HtmlXPathSelector(response)
            name = hxs.select('//div[@id="content"]/div[@class="header"]/h2/text()').extract()
            print name

我解释我的代码:我定义了一个遵循下一页的规则。
为了跟踪当前页面的每个链接,我创建了一个获取链接的请求对象并返回该对象。
通常,对于每个请求返回,我必须在 parse_sub 函数中看到“打印名称”。
但是只有一个链接被关注(不是全部),我不明白为什么。
它很好地抓取了链接,请求对象被很好地创建,但它每页只输入一次 parse_sub。

你能帮助我吗 ?
多谢

4

1 回答 1

1

我回来了 !我的问题来自我的退货声明。

解决方案:

    for link in links :
        link = title.select("h3/a/@href").extract()
        request = Request(link, callback=self.parse_hotspot)
        yield request
于 2013-04-23T16:48:32.020 回答