2011-04-03 7 views
5

, हम एक पृष्ठ में पहली तालिका को देखो कहो तो:क्या सुंदर सूप का उपयोग कर एचटीएमएल टेबल के एन-वें कॉलम को पाने का कोई साफ तरीका है?

table = BeautifulSoup(...).table 

पंक्तियों के साथ स्कैन किया जा सकता एक साफ के लिए लूप:

for row in table: 
    f(row) 

लेकिन प्राप्त करने के लिए एक एकल स्तंभ बातें गंदा मिल ।

मेरा प्रश्न: क्या एक ही कॉलम निकालने का एक शानदार तरीका है, या तो इसकी स्थिति से, या इसके 'नाम' (यानी इस कॉलम की पहली पंक्ति में दिखाई देने वाला पाठ)?

उत्तर

5

lxml सुंदर सूप से कई गुना तेज है, तो आप इसका उपयोग करना चाहेंगे।

from lxml.html import parse 
doc = parse('http://python.org').getroot() 
for row in doc.cssselect('table > tr'): 
    for cell in row.cssselect('td:nth-child(3)'): 
     print cell.text_content() 

या, पाशन के बजाय:

rows = [ row for row in doc.cssselect('table > tr') ] 
cells = [ cell.text_content() for cell in rows.cssselect('td:nth-child(3)') ] 
print cells 
संबंधित मुद्दे