2014-03-31 138 views
2

我有一个内部网站,会在日常基础上发布最新的统计数据。 这个网站有关于许多公司的信息。我需要获得一家公司的数据。 HTML代码如下:Python:从网页获取乘文本值

注:所有文本值,如“Big Company A”,“1810”,“14”,“2045”,“135”,“98.8%”,“100.0% “都需要输出。

* 注2:在同一页面有很多公司列表,它们都具有相同的结构。对我来说问题是,如何找到“大公司A”,并输出属于大公司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/01追加一个评论关于如何定位“大公司A”

+0

看一看美丽的汤。 – rlms

+0

感谢您的指导,我检查了BeautifulSoup,并且我认为我需要花更多时间来了解HTML和Python –

回答

1

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

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

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

我还没有检查过这个代码,所以让我知道如果它不起作用。

+0

感谢您的帮助,它接近我想要的。而另一个问题是找到“大公司A”,因为我们的公司结构相同,我需要找到“大公司A”并输出价值。 –

1

使用BeautifulSoup解析器,页面中的所有标签遍历并获得text:

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% 
+0

非常感谢您的回答,您的代码简单而有效,我喜欢它。还有一个问题是找到“大公司A”并输出相同的价值。我试图弄清楚,但没有任何进展。 –