无法使用BeautifulSoup从标签中删除文本

时间:2012-11-19 08:40:04

标签: python class beautifulsoup

这有效......

    print soup.findAll('td',{ "class" : "green center" })

但我只需要文本,这不会起作用......

    print soup.findAll('td',{ "class" : "green center" }).text

这是我如何使用它。

#!python27
import fileinput
import sys
import BeautifulSoup
from BeautifulSoup import BeautifulSoup
import re, urllib
filename = "url.txt"
LineNumber=0
f=open(filename)
lines=f.readlines()
f.close()
for line in lines:
        filehandle = urllib.urlopen("http://kat.ph/usearch/"+lines[LineNumber]+"/")
        line = filehandle.read()
        soup = BeautifulSoup(line)
        print soup.findAll('td',{ "class" : "green center" }).text
        print soup.findAll('td',{ "class" : "red lasttd center" }).text
        print LineNumber
        LineNumber=LineNumber+1

        filehandle.close()

发布脚本url.txt只是一个要运行的搜索列表。

2 个答案:

答案 0 :(得分:2)

findAll返回符合条件"class":"green center"等所有元素的列表。如果您对返回该列表中的单个元素感兴趣,可以通过offset调用它:

print soup.findAll('td',{'class':'green center'})[0].text
print soup.findAll('td',{'class':'green center'})[1].text

或者,您可以遍历列表:

for td in soup.findAll('td',{'class':'green center'}):
    print td.text

此外,如果您有兴趣组合列表中的所有文本,您可以将每个元素附加到列表并加入:

td_list = []
for td in soup.findAll('td',{'class':'green center'}):
    td_list.append(td.text)
print ' '.join(str(x) for x in td_list)

我希望这有帮助!

答案 1 :(得分:0)

findAll将获取元素列表,您需要遍历列表并在每个元素上调用.text

for e in soup.findAll('td',{ "class" : "green center" }):
    print e.text