teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

解決策の追加

2017/09/12 03:42

投稿

jackojacko_
jackojacko_

スコア17

answer CHANGED
@@ -1,3 +1,32 @@
1
+ ##追記
2
+ ご回答を受けて、<body>の子タグの<body>の子タグの<name>と指定したところ、そちらでもうまくいきました!
3
+ (パーサーを他に替えてもどうしてもHTMLと認識してしまうこともあるので……)
4
+
5
+ ```Python
6
+ import lxml.html
7
+ import selenium
8
+ from selenium import webdriver
9
+ from bs4 import BeautifulSoup
10
+
11
+ bodytype=[]
12
+
13
+ url='http://webservice.recruit.co.jp/carsensor/usedcar/v1/?key=(APIキー)&model='
14
+
15
+ driver = webdriver.Chrome('C:\selenium\chromedriver')
16
+
17
+ driver.get(url + "プリウス")
18
+ data = driver.page_source.encode('utf-8')
19
+ soup = BeautifulSoup(data, "lxml")
20
+
21
+ if soup.find("name"):
22
+ bodytype.append(soup.find("body").find("body").find("name").string)
23
+ else:
24
+ bodytype.append(None)
25
+
26
+ driver.quit()
27
+ ```
28
+
29
+ ##自己解決
1
30
  根本的な原因はわからないままなのですが、「<body>の子要素の<name>」という風に親要素との関連で定義するのを諦めて、「2つ目の<name>タグ」という条件で指定するようにしたところ、一応本来の目的は達成できました。
2
31
 
3
32
  ```Python

2

文法を修正

2017/09/12 03:42

投稿

jackojacko_
jackojacko_

スコア17

answer CHANGED
@@ -17,7 +17,6 @@
17
17
  soup = BeautifulSoup(data, "lxml")
18
18
 
19
19
  if soup.find("name"):
20
- body = soup.find("body")
21
20
  bodytype.append(soup.find("name")[1].string)
22
21
  else:
23
22
  bodytype.append("NA")

1

文法を修正

2017/07/28 08:35

投稿

jackojacko_
jackojacko_

スコア17

answer CHANGED
@@ -16,7 +16,7 @@
16
16
  data = driver.page_source.encode('utf-8')
17
17
  soup = BeautifulSoup(data, "lxml")
18
18
 
19
- if soup.find("name")[1].string:
19
+ if soup.find("name"):
20
20
  body = soup.find("body")
21
21
  bodytype.append(soup.find("name")[1].string)
22
22
  else: