2012-11-19 83 views
1

這個作品標籤...廣東話拉出來的文字使用BeautifulSoup

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

,但我只需要文本,這不會工作...

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

這裏是如何使用它的IM。

#!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只是一個要運行的搜索列表。

+0

你看過錯誤信息嗎? ('ResultSet'沒有'text'屬性)這應該給你一個線索=) – katrielalex

回答

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 

此外,如果你有興趣在所有的文字相結合的列表中,你可以AP把每個元素加入列表並加入:

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) 

我希望這有助於!

0

findAll將獲得元素列表,您需要遍歷列表並在每個元素上調用.text

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