2017-07-10 2 views
1

私は、リストのWebページをクロールするScrapyスパイダーを作成しています。リスト項目には、住所や年などの複数の属性が含まれます。 Scrapyの公式ウェブサイトには、ネストされたセレクタに関する指示があります。セレン入れ子のセレクタが期待どおりに機能しない

>>> links = response.xpath('//a[contains(@href, "image")]') 
>>> links.extract() 
[u'<a href="image1.html">Name: My image 1 <br><img src="image1_thumb.jpg"></a>', 
u'<a href="image2.html">Name: My image 2 <br><img src="image2_thumb.jpg"></a>', 
u'<a href="image3.html">Name: My image 3 <br><img src="image3_thumb.jpg"></a>', 
u'<a href="image4.html">Name: My image 4 <br><img src="image4_thumb.jpg"></a>', 
u'<a href="image5.html">Name: My image 5 <br><img src="image5_thumb.jpg"></a>'] 

>>> for index, link in enumerate(links): 
...  args = (index, link.xpath('@href').extract(), link.xpath('img/@src').extract()) 
...  print 'Link number %d points to url %s and image %s' % args 

Link number 0 points to url [u'image1.html'] and image [u'image1_thumb.jpg'] 
Link number 1 points to url [u'image2.html'] and image [u'image2_thumb.jpg'] 
Link number 2 points to url [u'image3.html'] and image [u'image3_thumb.jpg'] 
Link number 3 points to url [u'image4.html'] and image [u'image4_thumb.jpg'] 
Link number 4 points to url [u'image5.html'] and image [u'image5_thumb.jpg'] 

しかし、私は動的なウェブサイトをクロールしています。だから私はセレンセレクターを使用していた。私は、最初の項目のリストを取得しようとしています:

item_selectors=self.selector.xpath("""//div[@class='info-column']""") 

私はそれが完璧に動作し

item_selectors.extract() 

を印刷します。

しかし、私はアドレスは次のように各項目から属性を取得しようとすると:各反復で

for item_selector in item_selectors: 

    address_selector=item_selector.xpath("//span[contains(@ng-bind,'::card.buildingData.address')]/text()").extract() 

、私は、ページ全体からアドレス属性のリストを持っています。どんな考え?

答えて

2

"//span[contains(@ng-bind,'::card.buildingData.address')]/text()"は、ページ全体から属性リストを取得する理由です。最初の//span部分は、パーサにitem_selectorではなく、ページ全体を表示するように指示します。 .大手だけで、追加のだろうitem_selector以内に見ているだけの正しい構文:

address_selector=item_selector.xpath(".//span[contains(@ng-bind,'::card.buildingData.address')]/text()").extract() 
+0

おかげで、それが動作します。任意のアイデア、私は良いxpath参照を見つけることができます。私は多くを探し求めましたが、ほとんど見つけられませんでした。この使用方法の説明 – Jimmy

+0

@Jimmy [W3 Schoolsチュートリアル](https://www.w3schools.com/xml/xpath_intro.asp)をご覧ください。 –

関連する問題