2011-09-24 148 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