2015-06-12 30 views
2

我想在特定位置選擇一個字詞。源代碼是這樣的:Python + BS從網頁表格中選取特定位置的特定字詞(位置)

table = ''' 
<TABLE class=form border=0 cellSpacing=1 cellPadding=2 width=500> 
<TBODY> 
<TR> 
<TD vAlign=top colSpan=3><IMG class=ad src="/images/ad.gif" width=1  height=1></TD></TR> 
<TR> 
<TH vAlign=top width=22>Code:</TH> 
<TD class=dash vAlign=top width=5 lign="left">&nbsp;</TD> 
<TD class=dash vAlign=top width=30 align=left><B>BAN</B></TD></TR> 
<TR> 
<TH vAlign=top>Color:</TH> 
<TD class=dash vAlign=top align=left>&nbsp;</TD> 
<TD class=dash vAlign=top align=left>White</TD></TR> 
<TR> 
<TD colSpan=3>&nbsp;</TD></TR></TBODY></TABLE> 

''' 

我想在這裏選擇顏色的詞(它可能是「白色」,「紅色」或其他)。我試過是:

soup = BeautifulSoup(table) 

for a in soup.find_all('table')[0].find_all('tr')[2:3]: 
    print a.text 

它提供:

Color: 
  
White 

它看起來像4條線。我試圖將它們添加到列表中,然後刪除不需要的但不成功的。

什麼是最好的方式來選擇表中的顏色?

非常感謝。

回答

2

這將匹配'white'情況下獨立的所有實例...

soup = BeautifulSoup(table) 

res = [] 
for a in soup.find_all('table')[0].find_all('tr')[2:3]: 
    if 'white' in a.text.lower(): 
     text = a.text.encode('ascii', 'ignore').replace(':','').split() 
     res.append(text) 

稍微好一點的實現......

# this will iterate through all 'table' and 'tr' tags within each 'table' 
res = [tr.text.encode('ascii', 'ignore').replace(':','').split() \ 
     for table in soup.findAll('table') for tr in table.findAll('tr') \ 
     if 'color' in tr.text.lower()] 

print res 
[['Color', 'White']] 

只返回了自己的顏色,做...

# Assuming the same format throughout the html 
# if format is changing just add more logic 
tr.text.encode('ascii', 'ignore').replace(':','').split()[1] 
... 
print res 
['White'] 
+0

謝謝。對不起,我誤導了你。有更多的顏色,我想選擇顏色,而不是特定的詞(編輯問題) –

+0

好的我會編輯我的答案 –

+0

@MarkK這應該適合您的問題 –