如何使用BeautifulSoup获取特定内容

时间:2015-10-17 01:15:52

标签: python html beautifulsoup

尝试从nyc 维基页面的高中列表中获取所有高中名称。

我已经写了足够的脚本来获取包含高中,学术领域和入口列表的private Point _point; public void setDimensions(Point p) { _point = p; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (_point != null) { setMeasuredDimension(p.x, p.y); } else { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } } 标签中包含的所有信息标准 - 但我怎样才能将其缩小到我认为可以在<tr>范围内调整的范围(这会吐出td[0]) - 只是学校的名称?

到目前为止,我已编写过代码:

KeyError

我收到的输出:

from bs4 import BeautifulSoup
from urllib2 import urlopen

NYC = 'https://en.wikipedia.org/wiki/List_of_high_schools_in_New_York_City'

html = urlopen(NYC)
soup = BeautifulSoup(html.read(), 'lxml')
schooltable = soup.find('table')
for td in schooltable:
    print(td)

输出I&#39; m 寻求

<tr>
    <td><a href="/wiki/The_Beacon_School" title="The Beacon School">The Beacon School</a></td>
    <td>Humanities &amp; interdisciplinary</td>
    <td>Academic record, interview</td>
</tr>

2 个答案:

答案 0 :(得分:6)

如何获取页面上的第一个table,迭代除第一个标题之外的所有行,并获取每行的第一个td元素。适合我:

for row in soup.table.find_all('tr')[1:]:
    print(row.td.text)

答案 1 :(得分:1)

我还设法通过查找<td>内的所有锚点然后寻找标题来实现此目的:

titles = next(
    i.get('title') for i in [
        td.find('a') for td in soup.findAll('td') if td.find('a') is not None
        ]