我正在尝试从Wikipedia页面上抓取表格 Link。
创建数据框时出现错误,因为当我将每列分隔为时,会得到/ n标记,以保存在csv中
示例:row1输出为
',Navi Peth \ n,英国政府\ n,1818 + \ n,Navi(马拉地语:新)\ n'
我不明白为什么要得到这个\ n以及如何删除它。 我认为\ n在创建数据框时出错:
标记数据时出错。 C错误:第2行中应有1个字段,看到了2
我的代码:
import requests
from bs4 import BeautifulSoup
import pandas as pd
page1 = requests.get('https://en.wikipedia.org/wiki/Peths_in_Pune').text
soup1 = BeautifulSoup(page1, 'lxml')
table = soup1.find('table',{'class':'wikitable sortable'})
#table
table1=""
for tr in table.find_all('tr'):
row1=""
for tds in tr.find_all('td'):
row1=row1+","+tds.text
table1=table1+row1[1:]
row1
',Navi Peth \ n,英国政府\ n,1818 + \ n,Navi(马拉地语:新)\ n'
更多:
file=open("data1.csv","wb")
file.write(bytes(table1,encoding="ascii"))
df = pd.read_csv('data1.csv', header=None)
df
标记数据时出错。 C错误:第2行中应有1个字段,看到了2
PS:我想要的结果是Wiki表中的第一列
答案 0 :(得分:1)
单发,您可以使用pandas
read_html
功能:
import pandas as pd
df = pd.read_html("https://en.wikipedia.org/wiki/Peths_in_Pune")[1]
print(df)
df.to_csv("data.csv", index=False)
输出:view-online
对于第一列:
target = df['Peth Naam'].to_list()
print(target)
输出:
['Kasba Peth', 'Guruwar Peth', 'Somwar Peth', 'Mangalwar Peth', 'Shukrawar Peth', 'Raviwar Peth', 'Shaniwar Peth', 'Bhavani Peth', 'Ghorpade Peth', 'Budhwar Peth', 'Ganesh Peth', 'Sadashiv Peth', 'Narayan Peth', 'Rasta Peth', 'Nana Peth', 'Ganj Peth(later renamed to Mahatma Phule Peth)', 'Navi Peth']
现在回到真正的问题:
使用item.get_text("\n", strip=True)
答案 1 :(得分:-1)
使用pandas read_html方法在df中获取所需表的简单版本
TCL_UTF_MAX=4