Python:从网页中获取多个文本值

时间:2014-03-31 14:31:52

标签: python html

我有一个内部网站,会每天发布最新的统计数据。 该网站提供有关许多公司的信息。我需要获得一个公司的数据。 HTML代码如下:

注意:所有文字值,例如" Big Company A"," 1810"," 14"," 2045" ," 135"," 98.8%"," 100.0%"都需要输出。

* 注意2:同一页面中有许多公司列表,它们都具有相同的结构。对我来说问题是,如何找到" Big Company A",并输出所有Text值属于Big Company A?

<TH class=Company><A href="?scope=1&amp;values=1&amp;deleg=35">Big Company A</A></TH>
<TD>1810</TD>
<TD>14</TD>
<TD>2045</TD>
<TD>135</TD>
<TD class=ok><A class=ok href="av_report.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">99.8%</A></TD>
<TD class=ok><A class=ok href="av_report.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">100.0%</A></TD>
<TD class=ok><A class=ok href="hips_report.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">100.0%</A></TD>
<TD class=ok><A class=ok href="hips_report.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">98.8%</A></TD>
<TD class=ok><A class=ok href="os_reportbyou.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%&amp;server=0&amp;counts=1">100.0%</A></TD>
<TD class=ok><A class=ok href="os_reportbyou.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%&amp;server=1&amp;counts=1">100.0%</A></TD>
<TD class=ok><A class=ok href="pa_reportbydelegs.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">95.7%</A></TD>
<TD class=ok><A class=ok href="pa_reportbydelegs.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">97.6%</A></TD>
<TD class=ok><A class=ok href="pa_reportbydelegs4.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">104.8%</A></TD>
<TD class=ok><A class=ok href="pa_reportbydelegs4.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">104.2%</A></TD>
<TD class=ok><A class=ok href="pa_reportbydelegs4.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">99.9%</A></TD>

很抱歉,我对Python和HTML知之甚少,感谢您的帮助

修改记事 @ 2014/04/02,附上一条关于如何找到&#34; Big Company A&#39;的评论。

2 个答案:

答案 0 :(得分:1)

我不完全确定你想要的输出代码是什么。您希望它是标记中包含的所有值,还是只是您在问题中写入的值?

如果是前者,那么您可以轻松使用BeautifulSoup来获取所有数据。

html = #your html 
soup = BeautifulSoup(html)
list = soup.findAll("td")
for thing in list: 
    print list.text

我没有检查过这段代码,所以如果它不起作用,请告诉我。

答案 1 :(得分:1)

使用BeautifulSoup解析器,遍历页面上的每个标记并获取文本:

from bs4 import BeautifulSoup

data = """
<TH class="Company">
<A href="?scope=1&amp;values=1&amp;deleg=35">Big Company A</A>
</TH>
<TD>1810</TD>
<TD>14</TD>
<TD>2045</TD>
<TD>135</TD>
<TD class=ok><A class=ok href="av_report.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">99.8%</A></TD>
<TD class=ok><A class=ok href="av_report.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">100.0%</A></TD>
<TD class=ok><A class=ok href="hips_report.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">100.0%</A></TD>
<TD class=ok><A class=ok href="hips_report.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">98.8%</A></TD>
<TD class=ok><A class=ok href="os_reportbyou.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%&amp;server=0&amp;counts=1">100.0%</A></TD>
<TD class=ok><A class=ok href="os_reportbyou.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%&amp;server=1&amp;counts=1">100.0%</A></TD>
<TD class=ok><A class=ok href="pa_reportbydelegs.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">95.7%</A></TD>
<TD class=ok><A class=ok href="pa_reportbydelegs.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">97.6%</A></TD>
<TD class=ok><A class=ok href="pa_reportbydelegs4.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">104.8%</A></TD>
<TD class=ok><A class=ok href="pa_reportbydelegs4.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">104.2%</A></TD>
<TD class=ok><A class=ok href="pa_reportbydelegs4.php?deleg=35&amp;dc=%&amp;ou=%&amp;bu=%&amp;site=%">99.9%</A></TD>
</TH>
"""

soup = BeautifulSoup(data)
for tag in soup:
    print tag.text

打印:

Big Company A

1810
14
2045
135
99.8%
100.0%
100.0%
98.8%
100.0%
100.0%
95.7%
97.6%
104.8%
104.2%
99.9%