2017-12-10 9 views
-6

私はちょうどの治療で始まりました。私はscrapy shell [url]でページhttp://www.ikea.com/ae/en/catalog/categories/departments/childrens_ikea/31772/をロードし、製品名を取得するにはresponse.css(div.productTitle.Floatleft)を走ったが、それは私に次のエラーを与えてきました:reponse.css on not working

Traceback (most recent call last): File "", line 1, in NameError: name 'div' is not defined.

どのように私はこの問題を解決することができますか?

+0

。今では変数 'div'を使用しようとしています – furas

答えて

0

文字列:"div.productTitle.Floatleft"を使用する必要があります。 " "

ここで、変数divを使用しようとしています。


EDIT:サーバーからHTMLを見るためにWebブラウザを使用することができますし、エラーが表示されますシェルで

scrapy shell http://www.ikea.com/ae/en/catalog/categories/departments/childrens_ikea/31772/ 

シェルあなたはUser-Agent

実行]を設定する必要があり、正しいデータを取得しますメッセージ。

view(response) 

あなたはBTW(前回responseからurlを使用して)

fetch(response.url, headers={'User-Agent': 'Mozilla/5.0'}) 

response.css('div.productTitle.floatLeft') 

を異なるUser-Agentを使用して再度ページを取得:それはfloatLeft、ないFloatleftなければならない -


f下限と上限 Lを見ます

EDIT:同じスタンドアロンスクリプトとして(必要としないプロジェクト)ファイルoutput.csvで

import scrapy 

class MySpider(scrapy.Spider): 

    name = 'myspider' 

    #allowed_domains = ['http://www.ikea.com'] 

    start_urls = ['http://www.ikea.com/ae/en/catalog/categories/departments/childrens_ikea/31772/'] 

    def parse(self, response): 
     print('url:', response.url) 

     all_products = response.css('div.product') 

     for product in all_products: 
      title = product.css('div.productTitle.floatLeft ::text').extract() 
      description = product.css('div.productDesp ::text').extract() 
      price = product.css('div.price.regularPrice ::text').extract() 
      price = price[0].strip() 

      print('item:', title, description, price) 

      yield {'title': title, 'description': description, 'price': price} 

# --- it runs without project and saves in 'output.csv' --- 

from scrapy.crawler import CrawlerProcess 

c = CrawlerProcess({ 
    'USER_AGENT': 'Mozilla/5.0', 
    'FEED_FORMAT': 'csv', 
    'FEED_URI': 'output.csv', 
}) 
c.crawl(MySpider) 
c.start() 

結果: "div.productTitle.Floatleft":あなたは、文字列を使用する必要が

title,description,price 
BÖRJA,feeding spoon and baby spoon,Dhs 5.00 
BÖRJA,training beaker,Dhs 5.00 
KLADD RANDIG,bib,Dhs 9.00 
KLADDIG,bib,Dhs 29.00 
MATA,4-piece eating set,Dhs 9.00 
SMASKA,bowl,Dhs 9.00 
SMASKA,plate,Dhs 12.00 
SMÅGLI,plate/bowl,Dhs 19.00 
STJÄRNBILD,bib,Dhs 19.00 
+0

こんにちは、お返事ありがとうございました。私は実際にこれを試み、結果として私に[]を与えます。これで私を助けることができますか? 'scrap shell'の – user7105892

+0

は 'view(response)'を使い、Webブラウザーでサーバーから何を得るのかを確認します。それは、それはボットのためのエラーまたは多分メッセージについてのメッセージを与えるようです。おそらく、正しいデータを得るために 'User-Agent'ヘッダー(または他のヘッダーも)を設定する必要があります。 – furas

+0

'Mozilla/5.0'に設定された' User-Agent'でチェックし、サーバから正しいHTMLを与えました。しかし、あなたは間違ったCSSセレクタを持っています - 浮動小数点ではなく、 'floatLeft'でなければなりません - ' f'と 'L'の下位を参照してください – furas