2016-03-20 614 views
0

我正在尋找一個鏈接http://gaana.com/。我想得到編輯器選擇相冊的列表,但我無法刮取此鏈接,不知道我的代碼中有什麼錯誤。 我的蜘蛛代碼:如何刮scrapy使用scrapy

import scrapy 
from tutorial.items import GannaItem 


class GannaSpider(scrapy.Spider): 
    name = 'gannaspider' 
    start_urls = ["http://www.songspk.link/"] 

    def parse(self, response): 
     for sel in response.xpath('/html/body'): 
      item = GannaItem() 
      item['Albumname'] = sel.xpath('div[4]/div[4]/div[2]/div[1]/div[5]/div/ul/li[1]/div/div[2]/a[1]/span/text()').extract() 
      item['link'] = sel.xpath('div[4]/div[4]/div[2]/div[1]/div[3]/div/div[2]/div/ul/li[1]/div/div[2]/a/@href').extract() 
     yield item 

而且我得到的輸出

{'Albumname': [], 'link': []} 

回答

2

有一對夫婦的代碼中的問題。

  1. 您的Xpath路徑非常複雜。您可能使用類似Portia之類的工具生成了它們。我寧願和班級名稱一起去。正如我所解釋的here索引(如div[4])應該避免使您的Xpath表達式更健壯。我使用類名從根本上降低了複雜度bz,這使得它更容易調試。

  2. 如果您使用的是嵌套選擇器,就像您正在使用for循環一樣),隨後您必須使用相對路徑(從./開始),如here所述。

該代碼會做你想要什麼:

​​