###前提・実現したいこと
カーセンサーnetの中古車検索API(https://webservice.recruit.co.jp/carsensor/reference.html)を用いてスクレイピングをしようとしています。
BeautifulSoupを使っているのですが、<body>内の<name>を出力したいのに、以下のコードではbodyより手前にある<brand>内の<name>が出力されてしまいます。
どうすればbody内のnameを取得できるでしょうか?
###発生している問題・エラーメッセージ
カーセンサーnetのAPIを使うと、たとえば車種「プリウス」で検索すると以下のようなXMLが出力されます。
以下の「ミニバン」を取得したいのに、「トヨタ」が取得されてしまいます。
XML
1<results xmlns="http://webservice.recruit.co.jp/carsensor/"> 2<api_version>1.01</api_version> 3<results_available>11262</results_available> 4<results_returned>10</results_returned> 5<results_start>1</results_start> 6<usedcar> 7<id>CU4326907244</id> 8<brand> 9<code>TO</code> 10<name>トヨタ</name> 11</brand> 12<model>プリウスα</model> 13<grade>1.8 S ツーリングセレクション</grade> 14<price>3107000</price> 15<inspection>新車未登録</inspection> 16<maintenance>法定整備付</maintenance> 17<warranty>保証付</warranty> 18<recycle>リ未</recycle> 19<engine>ハイブリッド</engine> 20<desc> 21新車車検3年!各色選べます(オプション色は32,400円高)!グレード変更OK!9型ナビフルセグ地デジ&CD録音機能&Bluetooth接続&DVD再生&バックカメラ&ETC&マット付! 22</desc> 23<body> 24<code>M</code> 25<name>ミニバン</name> 26</body> 27(以下略) 28</usedcar> 29</results>
###該当のソースコード
Python
1import lxml.html 2import selenium 3from selenium import webdriver 4from bs4 import BeautifulSoup 5 6bodytype=[] 7 8url='http://webservice.recruit.co.jp/carsensor/usedcar/v1/?key=(APIキー)&model=' 9 10driver = webdriver.Chrome('C:\selenium\chromedriver') 11 12driver.get(url + "プリウス") 13data = driver.page_source.encode('utf-8') 14soup = BeautifulSoup(data, "lxml") 15 16if soup.find("body").find("name"): 17 body = soup.find("body") 18 bodytype.append(body.find("name").string) 19else: 20 bodytype.append("NA") 21 22driver.quit()
![guest](/img/icon/icnUserSample.jpg)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/28 08:28 編集
2017/07/28 08:43
2017/07/28 08:49
2017/07/28 08:55