2017-02-22 6 views
0

で価格をつかむためにどのようにこれは私が私のブラウザからHTMLで何を参照してくださいHTML - XPathの

<li class="lvprice prc"> 

      <span class="bold">  
        $72.95</span> 
       </li> 

そのため価格をつかむために、私のXPathがされています。

prices = Selector(response).xpath('//*[@class = "lvprice prc"]') 
for price in prices: 
    item['price'] = float(price.xpath('span[1]/text()').extract()[0].strip()[1:].replace(',','')) 

URLの一部ではうまくいかなかったため、動作しなかったレスポンスを調べました。その応答は次のようになります。この

に対処する方法を

<li class="lvprice prc"> 

     <span class="bold"> 
       <b>ZAR</b> 2,656.74</span> 
      </li> 

任意の提案をありがとう! (ドメインはebay.com)

答えて

1

AJAXが実行される前に、これらの価格は実際にDOM内にありますか?

多分価格はAJAXの呼び出しによって読み込まれています。

ブラウザでJSを無効にし、そのHTMLがページに表示されていることを確認してください。

ちなみに、このXPATHを使用して、1つ以上のクラスを持つ要素を選択します。

//*[contains(@class, 'class1') and contains(@class, 'class2')] 

EDIT:

私はeBayがあるため、同じIPからの多くのリクエストのキャプチャのページを表示されていることを100%確信しています。 eBayはBABYのウェブサイトではなく、本当に大きな会社であり、彼らは掻き回しに反対していることを忘れないでください。それらはそれらを掻き分けるIPをブロックする。

私はAmazon、eBayなどの大きなウェブサイトを削っていましたが、実際にはそれらをクロールしていません。

これは、価格が回答に含まれていない場合の回答を表示するために行います。

from scrapy.utils.response import open_in_browser 

def parse_details(self, response): 
    try: 
     Selector(response).xpath('//*[@class = "lvprice prc"]').extract()[0] 
    except Exception: 
     open_in_browser(response) 

これは、OSのデフォルトブラウザでスクレイプページを開きます。

+0

私はjavascriptを無効にし、私のブラウザでebay.comに行くと、それは何も表示されないだけの空のページだと思います。 JavaScriptを有効にしてください。 新しい検索環境では、JavaScriptを有効にする必要があります。ブラウザでJavaScriptを有効にしてから、もう一度お試しください。 ---私はまだ、右クリックをし、検査し、それは同じことを示しますすることができますが: <スパンクラス=「大胆」> $ 72.95 –

+0

また、時々私は得ることができますそれは同じページから、時には私は同じ正確なページからすることはできません...私は何が起こっているのか分かりません。 –

+0

@CanGokalp eBayがあなたの応答にcaptchaを送信している可能性があります。私の答えの編集を見てください。 – Umair