2016-03-20 14 views
0

私はリンクをスカーピングしていますhttp://gaana.com/。私はエディタピックアルバムのリストを取得したいが、私はこのリンクを傷つけることができない私のコードで何が間違っているか分からない。 私のクモコード:スクラップを使用して曲をスクラップする方法

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. Xパスのパスはかなり複雑です。おそらくPortiaなどのツールを使ってそれらを生成しました。私はむしろクラス名で行くだろう。私が説明したように、hereインデックス(div[4]など)は、Xpath式をより堅牢にするために避けるべきです。私は、クラス名を使って複雑さbzを根本的に減らしたので、それらを簡単にデバッグすることができました。

  2. forループを使用しているようにネストされたセレクタを使用している場合は、次にで始まる相対パスを使用する必要があります(here)。

このコードは、あなたがやりたいことになります。

​​