parsing table with BeautifulSoup and write in text file

前端 未结 2 1208
遥遥无期
遥遥无期 2021-02-03 11:57

I need data from table in text file (output.txt) in this format: data1;data2;data3;data4;.....

Celkova podlahova plocha bytu;33m;Vytah;Ano;Nadzemne podlazie;Prizemne pod

相关标签:
2条回答
  • 2021-02-03 12:41

    You are not keeping each record as you read it in. Try this, which stores the records in 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()
    

    This could be cleaned up more, but I think it's what you are wanting.

    0 讨论(0)
  • 2021-02-03 12:47

    here's an alternative non BS way, just for your task

    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)
    

    output

    $ ./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 讨论(0)
提交回复
热议问题