获取各省人口排名数据

目录

一、目标网址

二、网址分析

2.1、获取并解析网页内容

2.2、两种获取方法

三、获取目标数据

四、代码附件


一、目标网址

目标网址:中国人口排名 省份

获取各省人口排名数据_第1张图片 1.1 网址截图

二、网址分析

2.1、获取并解析网页内容

        我们需要使用requests库获取网页,使用BeautifulSoup库解析网页内容。

获取各省人口排名数据_第2张图片 2.1.1 BeautifulSoup获取网页内容

2.2、两种获取方法

        这篇主要介绍方法二

获取各省人口排名数据_第3张图片 2.1.2 方法一:取字典

获取各省人口排名数据_第4张图片 2.1.3 方法二:取标签

三、获取目标数据

        这个网站比较工整,所有的省份数据都在 标签中

        tbody -> tr -> class="cos-row" -> class="cos-col" -> class="c-line-clamp1"

获取各省人口排名数据_第5张图片 3.1 总览

获取各省人口排名数据_第6张图片 3.2 

【1】 使用 findall() 方法获取表格中的每一行 tr 标签,

【2】再循环使用 find() 方法获取每一行 class="cos-row" 数据

【3】findall() 方法获取每一行class="cos-row" 中各个 class="c-line-clamp1" 数据,

【4】row.text.strip() 获取标签内容并除去空白符

【5】最后,我们将获取到的数据存储到一个列表中,并使用pandas库创建一个DataFrame对象,将数据以表格的形式输出。

四、代码附件

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = 'https://dbqa.pae.baidu.com/dbqa/page/list?srcid=51103&nl=1&query=%E4%B8%AD%E5%9B%BD%E4%BA%BA%E5%8F%A3%E6%8E%92%E5%90%8D%20%E7%9C%81%E4%BB%BD&en_s=zQqSnP0wKo6ZgYpcz5U994qb0VDmfqIysBkrGsYKsoNWsdIW1ttKBHLP2svkYl3BnmSoegvDPMJjUdH-9AZMouI4u7FKYNlzn-Y62bI0w-xAPNvJbZQvN_GDlVe3cXpDAT6YS94otM1z_3bX8kOqvhMHp-VucIIIQZY3lsdlVqLYl7M8eyxKvHKc-AzXWKklYvTtneuoJUKNTpiQ1Jidsg-1VVN8fUHSTsTZKuuR0cHvPw2qso-sGszsh-u0pzSo79iJcMt6Dlf_eNQQ2I9Jry8c8ShOwY-3_Lci_PuLjvLxuI4cYOMvxkzHic_ujaqHT0tMCM-J1Xo6UKJDA'
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')
table = soup.find('tbody').findAll('tr', recursive=False)  # tbody标签内容
exc = []
i = 0
for subtable in table:
    data = subtable.find('div', {'class':  "cos-row"})
    rows = data.find_all('div', {'class': "c-line-clamp1"})
    cols = [row.text.strip() for row in rows]  # 循环取所有相同class中间的内容,row.text.strip()  # 取class中间的内容
    i = i + 1
    cols.append(i)
    exc.append(cols)
print(exc)
df = pd.DataFrame(exc, columns=['省份', '时间', '人口数', '单位', '排名'])  # columns=['排名', '省份', '时间', '人口数', '单位']
df = df[['排名', '省份', '时间', '人口数', '单位']]
print(df)
df.to_excel("population_data.xlsx", index=False)

你可能感兴趣的:(python,数据分析,python学习,python,pandas,beautifulsoup)