2016-04-05 18 views
0

私は最初のスパイダーを動こうとしていますが、苦労しています。私はそれを実行することができますが、それはすべてのページを見つけることはありません。誰かが何らかのアイデアを持っていれば、大いに感謝するでしょう。 私のコードは:スパイダーはページが見つからない

from scrapy.spiders import Spider 
from scrapy.selector import Selector 

from second_hotel.items import Website 


class secondhotelSpider(Spider): 
    name = "second_hotel_spider.py" 
    allowed_domains = ["uk.hotels.com"] 
    start_urls = [ 
     "https://uk.hotels.com/hotel/details.html?FPQ=6&WOE=1&q-localised-check-out=10/04/2017&WOD=1&q-room-0-children=0&pa=1&tab=description&JHR=9&q-localised-check-in=03/04/2017&hotel-id=128604&q-room-0-adults=2&YGF=14&MGT=7&ZSX=0&SYE=3", 
     "https://uk.hotels.com/hotel/details.html?FPQ=6&WOE=1&q-localised-check-out=04/04/2016&WOD=7&q-room-0-children=0&pa=1&tab=description&JHR=8&q-localised-check-in=03/04/2016&hotel-id=424807&q-room-0-adults=2&YGF=2&MGT=1&ZSX=0&SYE=3", 
    ] 

    def parse(self, response): 

     sel = Selector(response) 
     sites = sel.xpath('//ul[@class="directory-url"]/li') 
     items = [] 

     for site in sites: 
      item = Website() 
      item['name'] = site.xpath('a/text()').extract() 
      item['link'] = site.xpath('a/@href').extract() 
      item['description'] = site.xpath('text()').re('-\s[^\n]*\\r') 
      items.append(item) 

     print items 
     return items 

ありがとうございます。

+0

を持つ要素を含んでいませんか? [] - 空のリスト –

+0

いいえ、リストを印刷していません。 –

+0

これはあなたが持っているコード全体ですか?はいの場合、メソッドを呼び出さない。 –

答えて

0

そのためsites変数が空である、あなたのXPath式に誤りがあります。

あなたはparse方法でscrapy shell

scrapy shell 'https://uk.hotels.com/hotel/details.html?FPQ=6&WOE=1&q-localised-check-out=04/04/2016&WOD=7&q-room-0-children=0&pa=1&tab=description&JHR=8&q-localised-check-in=03/04/2016&hotel-id=424807&q-room-0-adults=2&YGF=2&MGT=1&ZSX=0&SYE=3' 
In [4]: response.xpath('//ul[@class="directory-url"]/li') 
Out[4]: [] 

またはinspect_response(response, self)を経由して、あなたのXPathをチェックすることがあります。

from scrapy.shell import inspect_response 
inspect_response(response, self) 

start_urlsページは、それは少なくともこれを印刷してい[@class="directory-url"]

関連する問題