使用场景:
需要初始化国家(地区表),字段有国家名称、国家编码等等。
解决方案:
使用requests发送请求,使用bs4解析得到的HTML,打开F12,查看元素,(可以Ctrl+S直接保存HTML使用VS code 打开更加清晰)找到数据所在标签,再根据标签获取内容。获取需要的数据,再存储到数组,最后使用pandas将数据转成DataFrame,调用to_excel方法导出。
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 目标网页URL
url = 'https://www.guojiadaima.com/'
# 发送HTTP请求获取网页内容
response = requests.get(url)
response.encoding = 'utf-8' # 根据网页的编码调整
# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(response.text, 'html.parser')
# 找到数据所在的标签
tbodyData = soup.find('tbody')
# 初始化数据列表
data = []
# 提取表格中的数据
for row in tbodyData.find_all('tr')[1:]: # 跳过表头
columns = row.find_all('td')
if len(columns) > 1:
if columns[3].text.strip() != '':
country_name = columns[3].text.strip() # 中文简称
english_name = columns[4].text.strip() # 英文简称
iso2_code = columns[5].text.strip() # ISO 2
iso3_code = columns[6].text.strip() # ISO 3
numerical_code = columns[7].text.strip() # 数字代码
ip_code = columns[9].text.strip() # 数字代码
data.append({
'国家名称': country_name,
'英文名称': english_name,
'国家编码2': iso2_code,
'国家编码3': iso3_code,
'数字代码': numerical_code,
'域名后缀': ip_code
})
# 打印提取的数据
for item in data:
print(item)
# 将数据转换为DataFrame
df = pd.DataFrame(data)
print(df)
# 导出到Excel文件
# index=False表示不导出DataFrame的索引
df.to_excel('countries_codes.xlsx', index=False)
# 指定输出的Excel文件的完整路径
# 假设你想要将文件保存在C盘的某个文件夹中
output_path = 'C:/Users/YourUsername/Documents/output.xlsx'
# 或者在Linux/macOS系统中使用正斜杠(/)或双反斜杠(\\)作为路径分隔符
# output_path = '/home/yourusername/Documents/output.xlsx'
# 或者
# output_path = 'C:\\Users\\YourUsername\\Documents\\output.xlsx'
df.to_excel(output_path, index=False)
需要使用的依赖: