2017-06-25 16 views
0

私はちょうどhtmlスクレイピングのためにXPathを使い始めました。だから私は構文とちょっと混乱しています。XPATHを使用して属性値をスクレイプしますか?

<a href="/realestateandhomes-detail/15645-SW-74th-Circle-Dr-Apt-5_Miami_FL_33193_M69309-37779"> 
     <img alt="15645 Sw 74th Circle Dr Apt 5, Miami, FL 33193" title="15645 Sw 74th Circle Dr Apt 5, Miami, FL 33193" class="js-srp-listing-photos" itemprop="image" data-src="https://ap.rdcpix.com/1980533383/49e7a93da461352c04b8e7146a8d2ceel-m0xd-w480_h480_q80.jpg" data-omtag="srp-listMap:result:photo" src="https://ap.rdcpix.com/1980533383/49e7a93da461352c04b8e7146a8d2ceel-m0xd-w480_h480_q80.jpg" /> 
    </a> 

HTMLのパスは次のとおりです。:私はsourseコードの次のコードからURLを抽出しようとしています

<body> 
    <li> 
    <div> 
     <a></a> 

私はhtmlページを解析するscrapyを使用していますが、これは私のこれまでのコード:

私がコードを実行すると、エラーが16行目、つまりitem [] = site.select()。extract()に返されます。私は文法が正しいかどうかわからない、または欠けているもう一つの根本的な問題がある。

エラーは次のように私のitems.pyコードがある

KeyError: 'RealtorItem does not supprot field: link' 

です:

from scrapy.item import Item, Field 
class RealtorItem(Item): 
    link = scrapy.Field() 
+0

使用している治療のバージョンは何ですか? –

+0

それはscrapyですv 1.4.0 –

答えて

0

あなたはこのセレクタ//li/div/a/@hrefを使用してhref属性を抽出し、抽出したそれぞれを反復処理しようとしています実際には//li/div/a/@hrefセレクタを使用して何かをフェッチしないで、href属性で抽出されたテキストをフェッチするときに実際に何をしているのでしょうか。

はここにあなたのスパイダークラスのscrapyの新しいバージョンで

import scrapy 

class RealtorSpider(scrapy.Spider): 
    name = "realtor" 
    allowed_domains = ["realtor.com"] 
    start_urls = [ 
     "http://www.realtor.com/realestateandhomes-search/Miami_FL" 
     ] 
    def parse(self, response): 
     sites = response.xpath('//li/div/a') # <----- fetches all the <a> tags 
     items = [] 
     for site in sites: 
      print(site.extract()) 
      item = RealtorItem() 
      item['link'] = site.xpath('@href').extract() # <--- extract value from a tag 
      items.append(item) 
     return items 

を実装修正がここitems.pyファイル

from scrapy.item import Item, Field 
class RealtorItem(Item): 
    link = Field() 

全く関係のないアドバイスだだ:これはあなたのコードとは何の関係もありませんあなたは廃止され、廃止されたいくつかの機能を使用しています。より新しいバージョンの治療法を使い始める方法を学ぶためには、scrapy tutorialに行ってください。

+0

私はコードを変更しようとしましたが、それでも私には同じエラーが表示されます:{KeyError: 'RealtorItemはフィールドをサポートしていません:link'} item.pyファイルに問題があります非難された関数? –

+0

はい。私が持っている 'items.py'ファイルを使ってコードを更新します。 –

+0

あなたに助けてくれてありがとう –

関連する問題