2016-10-23 3 views
1

私はthis linkの治療をしています。ウェブサイトimdb.comからクロール情報ムービーが必要です。XPathを使用してウェブサイトimdb.comから新しいムービーデータをスクラップするにはどうすればよいですか?

私は、コードのXPath

//td[@class="overview-top"] 

を使用する場合、私は映画のリスト情報を受け取ります。

ここに私のコードです。

import scrapy 
import sys 
from imbd.items import ImbdItem 
class ImbdSpiderSpider(scrapy.Spider): 
    name = "imbd_spider" 
    allowed_domains = ["imdb.com"] 
    start_urls =() 

    def parse(self, response): 

     print response.url 
     title_movie= response.xpath('//td[@class="overview-top"]/h4/a/text()').extract() 
     length_title = len(title_movie) 

     if(length_title == 0): 
      return 
     # $x() 
     # read block 



     #print block[0].xpath('//*[@id="main"]/div/div[2]/div[4]/table/tbody/tr[1]/td[2]/h4/a').extract() 

     #print block[1] 
     #print block[1].xpath('//td[@class="overview-top"]/h4/a/text()').extract() 
     tree = response.xpath('//td[@class="overview-top"]') 
     i = 0 
     for block in tree: 
      #print table  
      title = block.xpath('//h4[@itemprop="name"]/a/text()').extract() 
      # author = block.xpath('//span[@itemprop="director"]/span/a/text()')[i].extract() 
      # rate = block.xpath('//div[@class="metascore no_ratings"]/strong/text()')[i].extract() 
      # time = block.xpath('//time[@itemprop="duration"]/text()')[i].extract() 
      # tag = block.xpath('//span[@itemprop="genre"]/text()').extract() 
      # des = block.xpath('//div[@class="outline"]/text()')[i].extract() 
      print title 
      # print author 
      # print rate 
      # print time 
      # print tag 
      # print des 
      #i = i + 1 

     # page = response.xpath('//div[@class="sort"]/a') 
     # page2 = page.xpath('//a[text()="Next"]/@href') 
     # nextpage = "http://www.imdb.com" + page2[0].extract() # /movie-coming-soon.. 

     # yield scrapy.Request(nextpage, self.parse) 

    def start_requests(self): 
     start = "http://www.imdb.com/movies-coming-soon/2017-12/" 
     yield self.make_requests_from_url(start) 

は、ここで私は、端末が一つのタイトルを表示したい私の結果 enter image description here

であるが、これは、リスト内のすべてのタイトルが表示されます。

マイコード:https://github.com/Takehashi/Scrapy-imbd.com/tree/master

+0

'タイトル= block.xpath( '.// H4 [@にitemprop = "名前"]/A /テキスト()')。抽出物()' – har07

+0

ええ。私はちょうどこれをsloveしていた。 「」を追加するだけです。これらのコードで。 – Yato

+0

@ har07ご協力いただきありがとうございます! – Yato

答えて

1

ちょうど追加 ""最初に重複を避けるために!

 item['title'] = block.xpath('.//h4[@itemprop="name"]/a/text()').extract() 
     item['author'] = block.xpath('.//span[@itemprop="director"]/span/a/text()').extract() 
     item['rate'] = block.xpath('.//div[@class="metascore no_ratings"]/strong/text()').extract() 
     item['time'] = block.xpath('.//time[@itemprop="duration"]/text()').extract() 
     item['tag'] = block.xpath('.//span[@itemprop="genre"]/text()').extract() 
     item['des'] = block.xpath('.//div[@class="outline"]/text()').extract() 
関連する問題