2011-09-24 142 views
0

我試圖建立一個只包含表頭和與我相關的行的html表。我正在使用的網站是http://wolk.vlan77.be/~gerben美麗的湯線匹配

我想獲取表頭和我的表條目,所以我不必每次都看我自己的名字。

我想要做什麼:

  • 得到html頁面
  • 解析它來獲取表的標題
  • 解析它來獲得與我有關的表格標記線(所以錶行包含盧卡斯)
  • 建立一個HTML頁面,顯示有關我的頭和表項

什麼我現在做:

  • 得到與beautifulsoup第一
  • 頭讓我的條目
  • 二者添加到一個數組
  • 通這個陣列,其產生可被印刷爲html頁面的字符串的方法

    DEF downloadURL(個體): 全局輸入 文件句柄= self.urllib.urlopen( 'http://wolk.vlan77.be/~gerben') 輸入= '' 爲林E在filehandle.readlines(): 輸入+ =行 filehandle.close()

    def soupParserToTable(self,input): 
        global header 
    
        soup = self.BeautifulSoup(input) 
        header = soup.first('tr') 
        tableInput='0' 
    
        table = soup.findAll('tr') 
        for line in table: 
         print line 
         print '\n \n' 
         if '''lucas''' in line: 
          print 'true' 
         else: 
          print 'false' 
         print '\n \n **************** \n \n' 
    

我想從一個包含盧卡斯的HTML文件中的行,但是當我運行它像這樣我得到這個在我的輸出:

**************** 


<tr><td>lucas.vlan77.be</td> <td><span style="color:green;font-weight:bold">V</span></td> <td><span style="color:green;font-weight:bold">V</span></td> <td><span style="color:green;font-weight:bold">V</span></td> </tr> 



false 

現在我不明白爲什麼它不匹配,字符串盧卡斯顯然在那裏:/?

回答

3

看起來你太過複雜了。

這裏有一個簡單的版本...

>>> import BeautifulSoup 
>>> import urllib2 
>>> html = urllib2.urlopen('http://wolk.vlan77.be/~gerben') 
>>> soup = BeautifulSoup.BeautifulSoup(html) 
>>> print soup.find('td', text=lambda data: data.string and 'lucas' in data.string) 
lucas.vlan77.be 
+0

非常好1單線程 –

+0

想知道,如何將標籤對象轉換爲str? –

+0

@LucasKauffman:你試圖解決的實際問題是什麼?你應該把它作爲一個完整的問題,而不是對一個答案發表評論。 – Johnsyweb

1

這是因爲行不是字符串,而是BeautifulSoup.Tag實例。嘗試獲得td值代替:

if '''lucas''' in line.td.string: 
+0

然後我得到一個錯誤nonetype :( –

+0

第一行空的TD。如果用和line.td.string「」在「線盧卡斯」「」替換.td.string: – Glader