2010-02-08 13 views
7

मैं इस प्रारूप में पाठ फ़ाइल (output.txt) में तालिका से डेटा की जरूरत है: data1; data2; data3; data4; .....पार्स मेज और पाठ फ़ाइल में लिखने

Celkova podlahova plocha bytu; 33m; Vytah; Ano; Nadzemne podlazie; Prizemne podlazie; .....; फ़ॉर्मा vlastnictva; Osobne

"एक पंक्ति" के सभी, विभाजक ";" है (जो बाद में csv- में निर्यात फ़ाइल)।

मैं शुरुआत कर रहा हूं .. मदद, धन्यवाद।

from BeautifulSoup import BeautifulSoup 
import urllib2 
import codecs 

response = urllib2.urlopen('http://www.reality.sk/zakazka/0747-003578/predaj/1-izb-byt/kosice-mestska-cast-sever-sladkovicova-kosice-sever/art-real-1-izb-byt-sladkovicova-ul-kosice-sever') 
html = response.read() 
soup = BeautifulSoup(html) 

tabulka = soup.find("table", {"class" : "detail-char"}) 

for row in tabulka.findAll('tr'): 
    col = row.findAll('td') 
    prvy = col[0].string.strip() 
    druhy = col[1].string.strip() 
    record = ([prvy], [druhy]) 

fl = codecs.open('output.txt', 'wb', 'utf8') 
for rec in record: 
    line = '' 
    for val in rec: 
     line += val + u';' 
    fl.write(line + u'\r\n') 
fl.close() 

उत्तर

11

आप गये प्रत्येक रिकॉर्ड में इसे पढ़ने के रूप में रख रहे हैं नहीं records में यह प्रयास करें, जो रिकॉर्ड संग्रहीत करता है:।

from BeautifulSoup import BeautifulSoup 
import urllib2 
import codecs 

response = urllib2.urlopen('http://www.reality.sk/zakazka/0747-003578/predaj/1-izb-byt/kosice-mestska-cast-sever-sladkovicova-kosice-sever/art-real-1-izb-byt-sladkovicova-ul-kosice-sever') 
html = response.read() 
soup = BeautifulSoup(html) 

tabulka = soup.find("table", {"class" : "detail-char"}) 

records = [] # store all of the records in this list 
for row in tabulka.findAll('tr'): 
    col = row.findAll('td') 
    prvy = col[0].string.strip() 
    druhy = col[1].string.strip() 
    record = '%s;%s' % (prvy, druhy) # store the record with a ';' between prvy and druhy 
    records.append(record) 

fl = codecs.open('output.txt', 'wb', 'utf8') 
line = ';'.join(records) 
fl.write(line + u'\r\n') 
fl.close() 

यह और अधिक साफ किया जा सकता है, लेकिन मुझे लगता है कि तुम क्या हो रहा है चाहते हैं। ';'

0

यहां सिर्फ अपने काम

store=[] #to store your results 
url="""http://www.reality.sk/zakazka/0747-003578/predaj/1-izb-byt/kosice-mestska-cast-sever-sladkovicova-kosice-sever/art-real-1-izb-byt-sladkovicova-ul-kosice-sever""" 
page=urllib2.urlopen(url) 
data=page.read() 
for table in data.split("</table>"): 
    if "<table" in table and 'class="detail-char' in table: 
     for item in table.split("</td>"): 
       if "<td" in item: 
        store.append(item.split(">")[-1].strip()) 
print ','.join(store) 

उत्पादन

$ ./python.py 
Celková podlahová plocha bytu,33 m2,Výťah,Áno,Nadzemné podlažie,Prízemné podlažie,Stav,Čiastočná rekonštrukcia,Konštrukcia bytu,tehlová,Forma vlastníctva,osobné 
+0

होना चाहिए के लिए एक वैकल्पिक गैर बी एस रास्ता नहीं है,। (स्टोर) में शामिल होने के रूप में अर्धविराम आइटम के बीच आवश्यक हैं। – pwdyson

+0

वाह यह बहुत अच्छा है - लेकिन आपके पास पहले आइटम को पकड़ने के लिए वहां एक सीमा है। नेस्टेड टेबल सहित टेबल में सभी डेटा को कैसे पकड़ना जारी रख सकता है? – itsricky

संबंधित मुद्दे