2017-05-22 13 views
0

ウェブサイトhttps://www.internationaltelecomsweek.comからすべての名前をスクラピーで削りたいと思います。ウェブサイトを削った後にデータがありません

これはアイテムファイルに含まれています。

import scrapy 
class ItwItem(scrapy.Item): 
    name = scrapy.Field() 

これは私のスパイダーです。

import scrapy 
from itw.items import ItwItem 
class ItwSpider(scrapy.Spider): 

     name = 'itw' 

     allowed_domains = ['https://www.internationaltelecomsweek.com'] 

     start_urls = ['https://www.internationaltelecomsweek.com/this-year/companies-attending'] 

     def parse(self, response): 
     data= json.loads(response.body) 
     for i in data: 
     item["name"] = i["DisplayName"] 
     return item 

私がscrapyを実行すると、空のcsvファイルしか取得されません。私は間違って何をしていますか?

答えて

1

出席者のリストが動的に生成され、各出席者がJSONオブジェクトとして返されたようです。

scrapy shellにサイトを読み込み、view(response)にチェックを入れて、あなたのスパイダーが実際に読むことができるものを確認してください。ブラウザでは出席者を見ることができる場所は何も表示されません。

ネットワークタブを調べて、どのリクエストがサーバーに渡されているかを確認すると、出席者のリストがそれぞれthis URLからJSONオブジェクトとして渡されていることがわかります。

何をする必要がありますすることです:JSON-オブジェクトを生成するURLを解析しscrapyでJSONを使用してそれらを処理:あなたはどのようなエラーを

import json 

data = json.loads(response.body) 
for i in data: 
    item["name"] = i["DisplayName"] 
+0

を得ていますか? – rongon

+0

IndentationError:インデントが外側のインデントレベルと一致しません。 – Hasan

+0

インデントが正しくないことを意味します。投稿したサンプルコードはあなたの解析関数の下になければなりません。つまり、8スペース分インデントする必要があります。 – rongon

関連する問題