Python代码找不到HTML元素

时间:2017-01-09 05:36:17

标签: python html web-crawler

在抓取此页面(http://bobaedream.co.kr/cyber/CyberCar_view.php?no=652455&gubun=I)时,我的代码会返回我无法理解的错误消息。

在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')

请帮忙。

2 个答案:

答案 0 :(得分:0)

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

table.find_all('div', class_='information')符合以下要求:

[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')

答案 1 :(得分:0)

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

soup.findall返回一个bs4.element.ResultSet。有两个项目。第一个是"' div',class _ ='信息'"。

(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')