【发布时间】:2020-02-06 13:05:36
【问题描述】:
Webscraping 的新手,并尝试解析 http://www.airportcodes.org 的 html 并将机场代码以及城市名称和州放入数据框中。 HTML 如下所示。基本上,似乎在每个 'div class="t6" 标记之后,我需要解析的项目行(城市、州和机场代码)都用中断标记列出,但由于它们是按字母顺序划分的,所以项目的数量每个部分都有所不同。
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr><td bgcolor="#CBC7E0"><img height="2" src="img/0.gif" width="1"/></td></tr>
</table></div>
<a name="USA"></a>
<div class="t6"><div class="major"><b>A</b></div></div>
Aberdeen, SD (ABR) <br/>
Abilene, TX (ABI)<br/>
Adak Island, AK (ADK)<br/>
Akiachak, AK (KKI)<br/>
Akiak, AK (AKI)<br/>
Akron/Canton, OH (CAK)<br/>
Akuton, AK (KQA)<br/>
Alakanuk, AK (AUK)<br/>
Alamogordo, NM (ALM)<br/>
...
<div class="sectionBreak">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr><td bgcolor="#CBC7E0"><img height="2" src="img/0.gif" width="1"/></td></tr>
</table></div>
<div align="right"><div align="right"><a href="#top">return to top</a></div></div>
<a name="USB"></a>
<div class="t6"><div class="major"><b>B</b></div></div>
Bakersfield, CA (BFL)<br/>
Baltimore, MD (BWI)<br/>
Bangor, ME (BGR)<br/>
Bar Harbour, ME (BHB)<br/>
...
到目前为止的代码:
import bs4 as bs
sauce = urllib.request.urlopen('http://www.airportcodes.org/').read()
soup = bs.BeautifulSoup(sauce, 'lxml')
for tag in soup.find_all("div", class_="t6"):
print(tag.next_sibling)
得到我:
Aberdeen, SD (ABR)
Bakersfield, CA (BFL)
Canton/Akron, OH (CAK)
但这是错误的,因为看起来代码只返回指定标签旁边的第一项。任何帮助将不胜感激!
【问题讨论】:
标签: python html css parsing beautifulsoup