【发布时间】:2018-07-30 08:40:52
【问题描述】:
我正在尝试解析 HTML 网站,但出现 KeyError。
代码如下:
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
my_url = "http://www.kontrakt.szczecin.pl/mieszkanie-sprzedaz-6664m2-339600pln-potulicka-nowe-miasto-szczecin-zachodniopomorskie,351165"
#PL: otwiera połączenie z wybraną stroną, pobieranie zawartości strony (urllib)
#EN: Opens a connection and grabs url
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
#html parsing (BeautifulSoup)
page_soup = soup(page_html, "html.parser") #html.parser -> zapisujemy do html, nie np. do xml
#PL: zbiera tabelkę z numerami ofert, kuchnią i innymi danymi o nieruchomości z tabelki
#EN: grabs the data about real estate like kitchen, offer no, etc.
containers = page_soup.findAll("section",{"class":"clearfix"},{"id":"quick-summary"})
# print(len(containers)) - len(containers) sprawdza ile takich obiektów istnieje na stronie
#PL: Co prawda na stronie jest tylko jedna taka tabelka, ale dla dobra nauki zrobię tak jak gdyby tabelek było wiele.
#EN: There is only one table, but for the sake of knowledge I do the container variable
container = containers[0]
print(len(container.dl))
print(container.dl[0])
这是显示错误的日志。
runfile('/home/bartosz/Pulpit/web_scrap.py', wdir='/home/bartosz/Pulpit')
36
Traceback (most recent call last):
File "<ipython-input-70-e826e21c585a>", line 1, in <module>
runfile('/home/bartosz/Pulpit/web_scrap.py', wdir='/home/bartosz/Pulpit')
File "/home/bartosz/anaconda3/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 705, in runfile
execfile(filename, namespace)
File "/home/bartosz/anaconda3/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "/home/bartosz/Pulpit/web_scrap.py", line 30, in <module>
print(container.dl[0])
File "/home/bartosz/anaconda3/lib/python3.6/site-packages/bs4/element.py", line 1011, in __getitem__
return self.attrs[key]
KeyError: 0
len(container.dl) 显示 dl 中有 36 个。如果我执行 len(container.dl.dt),它会显示:1.
【问题讨论】:
标签: python python-3.x beautifulsoup html-parsing