2014-03-31 186 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」並輸出相同的價值。我試圖弄清楚,但沒有任何進展。 –