2012-12-30 52 views
0

蜘蛛抓取一頁中的某些特定鏈接。然後它在每個頁面中搜索youtube鏈接和名稱以將其標識爲(頁面標題)。它確實找到我需要的所有鏈接,但訂單很奇怪。Scrapy逆向爬網

蜘蛛從底部到頂部收集所有的頁面信息。我怎樣才能讓它從頂部到底部?

我的蜘蛛:http://pastebin.com/5qLKr6ky

輸出:http://pastebin.com/j4h4aRMs

開始頁:它是蜘蛛(因爲我是一個新的用戶我不能發佈超過2個鏈接)

我希望輸出的順序與起始頁面中的順序相同。

回答

0

我不知道scrapy,但我知道你可以通過調用reversed來簡單地反轉python中的列表或其他迭代器。

+0

謝謝,但這並不完全是我所需要的。該清單不僅僅是顛倒過來。有很多鏈接是隨機的,我不知道爲什麼。這很難解釋,但如果你可以看看輸出它變得更清晰。 – CEFEGE

0

噢,你的意思是你需要得到的Youtube鏈接,以便他們放置在首頁上?

鏈接是隨機順序,因爲如果你看一下頁面的源代碼的鏈接頁面的一個Scrapy發出請求並行

class ProfessormesserSpider(BaseSpider): 

    allowed_domains = ['www.professormesser.com'] 
    start_urls = ['http://www.professormesser.com/n10-005/free-network-plus/'] 

    def parse(self, response): 
     # extract urls from start page and REMEMBER THEIR ORDER(!!!) 
     hxs = HtmlXPathSelector(response) 
     for i, link in enumerate(hxs.xpath("//td[@valign='center']/div/descendant::a/@href")): 
      # "i" is the link's order 
      yield yield Request(url=link, callback=self.parse_item, meta={'i': i}) 

    def parse_item(self, request): 
     order = response.request.meta["i"] 
     ... 
0

,它包含指向一個和下一個視頻。這些鏈接是這種形式:

<div class="entry clearfix"> 
... 
<b>Next:</b> The TCP/IP Model &gt;&gt;</a><br /> 
<center><iframe width="640" height="360" src="http://www.youtube.com/embed/lSK1d8fZyEw?rel=0" frameborder="0" allowfullscreen></iframe></center></p> 
</div> 

因此,你正在撿起重複的條目(雖然有不同的鏈接)。您可能需要開發一個更明確的xpath來過濾掉這些其他鏈接。