Python 多表头<;thead>;在表中<;表>;以及如何从<;thead>;作为一个表行
我试图从一个网站上搜集数据,但表中有两组数据,首先,2-3行数据在AD中,其余在tbody中。我可以很容易地一次只从一个数据中提取数据,当我尝试这两种方法时,我得到了一些错误,比如TypeError、AttributeError。顺便说一句,我正在使用python 这是密码Python 多表头<;thead>;在表中<;表>;以及如何从<;thead>;作为一个表行,python,web-scraping,Python,Web Scraping,我试图从一个网站上搜集数据,但表中有两组数据,首先,2-3行数据在AD中,其余在tbody中。我可以很容易地一次只从一个数据中提取数据,当我尝试这两种方法时,我得到了一些错误,比如TypeError、AttributeError。顺便说一句,我正在使用python 这是密码 import requests from bs4 import BeautifulSoup import pandas as pd url="https://www.worldometers.info/world-popu
import requests
from bs4 import BeautifulSoup
import pandas as pd
url="https://www.worldometers.info/world-population/"
r=requests.get(url)
print(r)
html=r.text
soup=BeautifulSoup(html,'html.parser')
print(soup.title.text)
print()
print()
live_data=soup.find_all('div',id='maincounter-wrap')
print(live_data)
for i in live_data:
print(i.text)
table_body=soup.find('thead')
table_rows=table_body.find_all('tr')
table_body_2=soup.find('tbody')
table_rows_2=soup.find_all('tr')
year_july1=[]
population=[]
yearly_change_in_perchantage=[]
yearly_change=[]
median_age=[]
fertillity_rate=[]
density=[]#density (p\km**)
urban_population_in_perchantage=[]
urban_population=[]
for tr in table_rows:
td=tr.find_all('td')
year_july1.append(td[0].text)
population.append(td[1].text)
yearly_change_in_perchantage.append(td[2].text)
yearly_change.append(td[3].text)
median_age.append(td[4].text)
fertillity_rate.append(td[5].text)
density.append(td[6].text)
urban_population_in_perchantage.append(td[7].text)
urban_population.append(td[8].text)
for tr in table_rows_2:
td=tr.find_all('td')
year_july1.append(td[0].text)
population.append(td[1].text)
yearly_change_in_perchantage.append(td[2].text)
yearly_change.append(td[3].text)
median_age.append(td[4].text)
fertillity_rate.append(td[5].text)
density.append(td[6].text)
urban_population_in_perchantage.append(td[7].text)
urban_population.append(td[8].text)
headers=['year_july1','population','yearly_change_in_perchantage','yearly_change','median_age','fertillity_rate','density','urban_population_in_perchantage','urban_population']
data_2= pd.DataFrame(list(zip(year_july1,population,yearly_change_in_perchantage,yearly_change,median_age,fertillity_rate,density,urban_population_in_perchantage,urban_population)),columns=headers)
print(data_2)
data_2.to_csv("C:\\Users\\data_2.csv")
您可以尝试下面的代码,它将生成所需的数据。如果您需要任何澄清,请告诉我:-
import requests
import pandas as pd
url = 'https://www.worldometers.info/world-population/'
html = requests.get(url).content
df_list = pd.read_html(html, header=0)
df = df_list[0]
#print(df)
df.to_csv("data.csv", index=False)
给我下面的输出
print(df)
Year (July 1) Population ... Urban Pop % Urban Population
0 2020 7794798739 ... 56.2 % 4378993944
1 2019 7713468100 ... 55.7 % 4299438618
2 2018 7631091040 ... 55.3 % 4219817318
3 2017 7547858925 ... 54.9 % 4140188594
4 2016 7464022049 ... 54.4 % 4060652683
5 2015 7379797139 ... 54.0 % 3981497663
6 2010 6956823603 ... 51.7 % 3594868146
7 2005 6541907027 ... 49.2 % 3215905863
8 2000 6143493823 ... 46.7 % 2868307513
9 1995 5744212979 ... 44.8 % 2575505235
10 1990 5327231061 ... 43.0 % 2290228096
11 1985 4870921740 ... 41.2 % 2007939063
12 1980 4458003514 ... 39.3 % 1754201029
13 1975 4079480606 ... 37.7 % 1538624994
14 1970 3700437046 ... 36.6 % 1354215496
15 1965 3339583597 ... N.A. N.A.
16 1960 3034949748 ... 33.7 % 1023845517
17 1955 2773019936 ... N.A. N.A.
[18 rows x 9 columns]
您可以尝试下面的代码,它将生成所需的数据。如果您需要任何澄清,请告诉我:-
import requests
import pandas as pd
url = 'https://www.worldometers.info/world-population/'
html = requests.get(url).content
df_list = pd.read_html(html, header=0)
df = df_list[0]
#print(df)
df.to_csv("data.csv", index=False)
给我下面的输出
print(df)
Year (July 1) Population ... Urban Pop % Urban Population
0 2020 7794798739 ... 56.2 % 4378993944
1 2019 7713468100 ... 55.7 % 4299438618
2 2018 7631091040 ... 55.3 % 4219817318
3 2017 7547858925 ... 54.9 % 4140188594
4 2016 7464022049 ... 54.4 % 4060652683
5 2015 7379797139 ... 54.0 % 3981497663
6 2010 6956823603 ... 51.7 % 3594868146
7 2005 6541907027 ... 49.2 % 3215905863
8 2000 6143493823 ... 46.7 % 2868307513
9 1995 5744212979 ... 44.8 % 2575505235
10 1990 5327231061 ... 43.0 % 2290228096
11 1985 4870921740 ... 41.2 % 2007939063
12 1980 4458003514 ... 39.3 % 1754201029
13 1975 4079480606 ... 37.7 % 1538624994
14 1970 3700437046 ... 36.6 % 1354215496
15 1965 3339583597 ... N.A. N.A.
16 1960 3034949748 ... 33.7 % 1023845517
17 1955 2773019936 ... N.A. N.A.
[18 rows x 9 columns]
向我们展示您迄今为止所做的尝试。欢迎来到so。阅读一些关于如何提问的技巧。照目前的情况,你的问题不能也不会得到回答。由于1)内容非常广泛,2)您没有显示任何代码来显示您尝试过的内容或让其他人复制您的问题。因此,我更新了我的问题。请不要为同一问题创建重复的问题。sry的副本,删除了之前的一个。向我们展示您迄今为止的尝试。欢迎使用so。阅读一些关于如何提问的技巧。照目前的情况,你的问题不能也不会得到回答。由于1)内容非常广泛,2)您没有显示任何代码来显示您尝试过的内容或让其他人复制您的问题。因此,我更新了我的问题。请不要为同一问题创建重复的问题。sry的副本,删除了同一站点上以前的oneWorld人口(2020年和历史),您可以现在就尝试NX吗……但是您能告诉我使用bs4的代码和不使用bs4的urs之间的区别是什么吗……当然,read_html方法非常简单,实际上是递归搜索表并返回数据帧列表。然后为它编制所需df的索引。你可以在同一个网站上浏览世界人口(2020年和历史)文档,你可以现在就试试NX吗……但是你能告诉我使用bs4的代码和不使用bs4的urs的代码之间的区别是什么吗……当然,read_html方法非常简单,实际上是递归搜索表并返回数据帧列表。然后为它编制所需df的索引。您实际上可以浏览文档