2015-01-16 144 views
2

這個問題有點像後面提到的this問題。Scrapy:抓取鏈接列表

我想刮一個網站,其中包含第一頁上的一些鏈接。類似於this

現在,由於我想抓取頁面上顯示的項目的細節,我已經提取了它們各自的URL。

我已將這些URLS保存在列表中。

我該如何啓動蜘蛛來分別刮取頁面?

爲了更好地理解:

[urlA, urlB, urlC, urlD...] 

這是我刮的URL列表。現在我想推出一個蜘蛛來分別鏈接。

我該如何解決這個問題?

+0

我認爲你應該重新閱讀你的[早期問題]的答案(http://stackoverflow.com/questions/27779889/scraping-many-pages-using-scrapy)。您不會生成URL列表,您可以從start_request中爲這些URL返回一個新的Request對象列表。 – fnl

回答

2

我假設您要跟隨的網址導致具有相同或相似結構的網頁。如果是這樣的話,你應該做這樣的事情:

from scrapy.contrib.spiders import CrawlSpider 
from scrapy.selector import Selector 
from scrapy.http import Request 

class YourCrawler(CrawlSpider): 

    name = 'yourCrawler' 
    allowed_domains = 'domain.com' 
    start_urls = ["htttp://www.domain.com/example/url"] 


    def parse(self, response): 
     #parse any elements you need from the start_urls and, optionally, store them as Items. 
     # See http://doc.scrapy.org/en/latest/topics/items.html 

     s = Selector(response) 
     urls = s.xpath('//div[@id="example"]//a/@href').extract() 
     for url in urls: 
     yield Request(url, callback=self.parse_following_urls, dont_filter=True) 


    def parse_following_urls(self, response): 
     #Parsing rules go here 

否則,如果你想跟着導致結構不同網頁的網址,然後就可以定義特定的方法對他們(類似parse1,parse2,parse3 ...)。

+0

它適用於第一個網址,然後刮板停止。 – Crolle