import requests
from lxml import etree
import csv #引入
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"} #伪装
url='https://www.kylc.com/stats/global/yearly_per_country/g_gdp/chn-usa-jpn.html' #网页的链接
rp=requests.get(url,headers=headers) #发送请求
html=etree.HTML(rp.text) #获取网页源码
divs=html.xpath('/html/body/div[2]/div[1]/div[5]/div[1]/div[2]/div/div[2]/div/table/tbody/tr')
coun=html.xpath('/html/body/div[2]/div[1]/div[5]/div[1]/div[2]/div/div[2]/div/table/thead/tr[1]/th') #使用xpath解析
# print(divs)
list=[]
year=[]
cou=[]
gdp=[]
per=[] # 定义空列表
for r,i in enumerate (coun[1:]):
country_region=i.xpath('normalize-space(./text())')
cou.append(country_region)
for r in range(0,33):
i=divs[r]
year1=i.xpath('normalize-space(./td[1]/text())')
year.append(year1)
year.append(year1)
year.append(year1)
GDP=i.xpath('normalize-space(./td[2])')
GDP = str(GDP).split("亿")[0].split("万")[0]
GDP1=i.xpath('normalize-space(./td[4])')
GDP1= str(GDP1).split("亿")[0].split("万")[0]
GDP2 = i.xpath('normalize-space(./td[6])')
GDP2 = str(GDP2).split("亿")[0].split("万")[0] #循环解析获取
gdp.append(float(GDP))
gdp.append(float(GDP1))
gdp.append(float(GDP2))
per1=i.xpath('normalize-space(./td[3])')
per2=i.xpath('normalize-space(./td[5])')
per3 = i.xpath('normalize-space(./td[7])')
per.append(per1)
per.append(per2)
per.append(per3) #加入列表中
list.append([year[r],cou[r%3],gdp[r],per[r]])
print(list) #打印
with open('GDP年份数据.csv','a',newline="",encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['year','country_region','GDP','per'])
writer.writerows(list) #保存为csv格式
GDP年份数据
于 2022-11-23 20:56:14 首次发布
该博客主要展示了如何使用Python的requests和lxml库爬取网页上的全球GDP数据,并进行处理和存储。内容包括设置User-Agent以伪装浏览器,定位到目标表格,提取年份、国家和地区、GDP及占比等信息,并将数据保存到CSV文件中。博客重点在于数据抓取和基础数据分析的过程。
摘要由CSDN通过智能技术生成