所以我有一个网页,里面有我想抓取的网址。
作为刚接触本教程的新手,很难看到如何将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
答案 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