Распечатывает, но не записывает в CSV - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь сохранить таблицу на этом сайте> https://www.valuewalk.com/2019/01/top-10-most-obese-countries-oecd-who/

Она распечатывается, но не сохраняется в формате CSV. Может ли кто-нибудь помочь с советом?

from bs4 import BeautifulSoup
import csv


#Request webpage content
result = requests.get('https://www.valuewalk.com/2019/01/top-10-most-obese-countries-oecd-who/')

#Save content in var
src = result.content

#soupactivate
soup = BeautifulSoup(src,'lxml')


#look for table
tbl = soup.findAll('ol')
tbl2 = tbl[1]

#Get text out of table
tbltxt = tbl2.get_text()

#Open CSV
file = open('obesecountries.csv','w')
writer = csv.writer(file)

#Put data into csv
for row in tbltxt:
    writer.writerow(row)

Я нашел таблицу HTML, из которой хотел бы выйти. Я удалил теги HTML. Он печатает, но не сохраняет / записывает в CSV.

Ответы [ 2 ]

2 голосов
/ 07 ноября 2019

tbltxt - это строка, а не список. Вы должны зацикливаться на элементах <li>.

И аргумент writerow() должен быть списком, а не строкой.

for li in tbl2.findAll('li'):
    rowtext = li.get_text()
    write.writerow([rowtext])
1 голос
/ 07 ноября 2019
#Open CSV
file = open('obesecountries.csv','w')
writer = csv.writer(file)

#look for table
tbl = soup.findAll('ol')

#Put data into csv
for row in tbl:
    # get the text from the second item in the row
    txt = [row[1].get_text()] 

    #Get text out of table
    writer.writerow(txt)
...