如何让scrapy接受一个充满URL的页面作为起始URL并抓取它们?

时间:2014-02-10 04:37:39

标签: scrapy

所以我有一个网页,里面有我想抓取的网址。 作为刚接触本教程的新手,很难看到如何将start_urls扩展为抓取该页面上的所有链接。我猜测有一些内置的方法,但不能很好地破译文档。目前它刚刚访问该首页,意识到不,它确实不是其中一个子页面,并引发了一些异常。

class NewSpider(Spider):
    name = 'the_new_spider'
    allowed_domains = ['newspider.com']
    start_urls = ['http://newspider.com/page_full_of_urls'] #how to get it to extract links from this page first and crawl them?

    def parse(self, response):
        sel = Selector(response)
        t = sel.xpath("//title")
        item = NewItem()
        item['title'] = t
        return item

1 个答案:

答案 0 :(得分:3)

阅读docs

  

在回调函数中,您解析响应(网页)并返回   Item对象,Request对象或两者的可迭代对象。那些   请求还将包含回调(可能相同),然后   由Scrapy下载,然后由他们处理他们的回复   指定的回调。

这样的事情应该有效:

class NewSpider(Spider):
    name = 'the_new_spider'
    allowed_domains = ['newspider.com']
    start_urls = ['http://newspider.com/page_full_of_urls']

    def parse(self, response):
        sel = Selector(response)
        for url in sel.xpath("//.../@href").extract():
            yield Request(url, callback=self.parse_2)

    def parse_2(self, response):
        sel = Selector(response)
        t = sel.xpath("//title")
        item = NewItem()
        item['title'] = t
        return item