2017-01-09 81 views
0

抓取此頁面時(http://bobaedream.co.kr/cyber/CyberCar_view.php?no=652455&gubun=I),我的代碼返回了我無法理解的錯誤消息。Python代碼找不到HTML元素

在div標籤下(div class ='rightarea'),有一些標籤。但是當我嘗試讀取和收集數據時,它會一直返回錯誤消息,(content_table1 = table.find_all('div',class _ ='information')'ResultSet'對象沒有屬性'find_all')。奇怪的是我的代碼不會返回任何錯誤消息來收集不同列表頁面中的這部分數據。

下面是我的代碼:

from bs4 import BeautifulSoup 
import urllib.request 
from urllib.parse import urlparse 
from urllib.parse import quote 
from selenium import webdriver 
import re 
import csv 

URL = 'http://bobaedream.co.kr/cyber/CyberCar_view.php?no=652455&gubun=I' 
res = urllib.request.urlopen(URL) 
html = res.read() 
soup = BeautifulSoup(html, 'html.parser') 

# Basic Information 
table = soup.find_all('div', class_='rightarea') 
print(table) 

# Number, Year, Mileage, Gas Type, Color, Accident 
content_table1 = table.find_all('div', class_='information') 

請幫助。

回答

0
table = soup.find_all('div', class_='rightarea') # will return a list like [div_tag, div_tag, ...] 

table.find_all('div', class_='information')是euqal到:

[div_tag, div_tag, ...].find_all('div', class_='information') 

只有tag對象可以使用find_all(),你應該遍歷table list,得到div tag,比使用find_all()

for t in table: 
    t.find_all('div', class_='information') 
0
# Basic Information 
table = soup.find_all('div', class_='rightarea') 
print(table) 

soup.findall返回一個bs4.element.ResultSet。有兩個項目。第一個是「'div',class _ ='information'」。

(Pdb) type(table) 
<class 'bs4.element.ResultSet'> 
(Pdb) len(table) 
2 

(Pdb) table[0] 
<div class="rightarea">\n<div class="information">... 

(Pdb) table[1] 
<div class="rightarea">\n<div class="spectitle">... 

(Pdb) table[0].find_all('div', class_='information') 
[<div class="information">\n<dl>\n<dt>\n<span><em>5,480</em>.... 

所以,在你的腳本中,更新這一行應該讓它工作。

content_table1 = table[0].find_all('div', class_='information')