我正在使用python从Wikipedia开发数据表。我已经完成了代码,但是在将其仅导出到csv的某些列中并添加了附件双撇号时遇到了一些问题。
这是表的结果: 我只想提取以下列名称: Kode BPS,Nama,Ibu Kota,Populasi,Luas和Pulau。
这是我的代码:
#import libraries
import requests
from bs4 import BeautifulSoup
import pandas as pd
URL = 'https://id.wikipedia.org/wiki/Demografi_Indonesia'
response = requests.get(URL)
soup = BeautifulSoup(response.text,'html.parser')
table = soup.find('table',{'class':'wikitable sortable'}).tbody
rows = table.find_all('tr')
columns = [v.text.replace('\n','') for v in rows[0].find_all('th')]
df = pd.DataFrame(columns=columns)
for i in range(1,len(rows)):
tds = rows[i].find_all('td')
if len(tds)==4:
values = [tds[0].text, tds[1].text, tds[2].text, tds[3].text.replace('\n',''.replace('\xa0',''))]
else:
values = [td.text.replace('\n',''.replace('\xa0','')) for td in tds]
df = df.append(pd.Series(values, index=columns), ignore_index=True)
#print(df)
df.to_csv(r'C:\Users\Desktop\'+'\\report.csv',index=False)
答案 0 :(得分:1)
您可以将数据框中的列指定为:
columns = ['Kode BPS', 'Nama', 'Ibu Kota', 'Populasi', 'Luas', 'Pulau']
df = pd.DataFrame(columns=columns)
然后仅插入所需的值。
答案 1 :(得分:0)
怎么样?
make_base_for_xxx
保持简单。
答案 2 :(得分:0)
要将Wikipedia页面的表转换为CSV (pd.read_html())(df.empty)(df.to_csv()):
import pandas as pd
def wiki_to_csv(wikiurl = str):
tname = link.split("/")[-1]
tables = pd.read_html(link, header=0)
for i in range(len(tables)):
if not tables[i].empty:
fname = tname + " table " + str(i)
tables[i].to_csv(fname, sep=',')
要抓取该确切的表格并选择特定的列(df.rename())(Select Columns):
import pandas as pd
link = "https://id.wikipedia.org/wiki/Demografi_Indonesia"
df = pd.read_html(link, header=0)[2]
df = df.rename(columns={'Populasi[4]':'Populasi', 'Luas (km²)[5]':'Luas'})
df = df[['Kode BPS', 'Nama', 'Ibu kota', 'Populasi', 'Luas', 'Pulau']]
df.to_csv("Indonesia.csv", sep=',')
我不确定用双引号引起什么问题。