1

这行得通...

    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()

Post script url.txt 只是要运行的搜索列表。

4

2 回答 2

2

findAll返回满足您的条件的所有元素的列表"class":"green center"等。如果您有兴趣返回该列表的单个元素,您可以通过偏移量调用它:

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)

我希望这有帮助!

于 2012-11-19T14:50:26.683 回答
0

findAll将获得一个元素列表,您需要遍历列表并调用.text每个元素。

for e in soup.findAll('td',{ "class" : "green center" }):
    print e.text
于 2012-11-19T08:47:49.140 回答