Update 2.py

main
hnu202309010126 1 year ago
parent bcfc166cf8
commit 76edf2da22

134
2.py

@ -1,68 +1,68 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
""" """
Created on Thu Jun 6 14:36:59 2024 Created on Thu Jun 6 14:36:59 2024
@author: Asus @author: Asus
""" """
import requests import requests
url = "https://top.chinaz.com/gongsi/index_shizhi.html" url = "https://top.chinaz.com/gongsi/index_shizhi.html"
# 设置请求头信息 # 设置请求头信息
headers = { headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36"
} }
# 使用reqeusts模快发起 GET 请求 # 使用reqeusts模快发起 GET 请求
response = requests.get(url, headers=headers) response = requests.get(url, headers=headers)
# 获取请求的返回结果 # 获取请求的返回结果
html = response.text html = response.text
import re import re
# 公司名 # 公司名
company = re.findall('<a.*?target="_blank">(.+?)</a></h3>', html) company = re.findall('<a.*?target="_blank">(.+?)</a></h3>', html)
# 注册资本 # 注册资本
money = re.findall('<em>(.+?)</em>市值</div>', html) money = re.findall('<em>(.+?)</em>市值</div>', html)
pageOne = list(zip(company, money)) pageOne = list(zip(company, money))
# 存储内容 # 存储内容
message = [] message = []
# 总共16个页面的数据 # 总共16个页面的数据
for page in range(16): for page in range(16):
# 组装url # 组装url
if page == 0: if page == 0:
url = "https://top.chinaz.com/gongsi/index_shizhi.html" url = "https://top.chinaz.com/gongsi/index_shizhi.html"
else: else:
url = "https://top.chinaz.com/gongsi/index_shizhi_{}.html".format(page + 1) url = "https://top.chinaz.com/gongsi/index_shizhi_{}.html".format(page + 1)
# 使用reqeusts模快发起 GET 请求 # 使用reqeusts模快发起 GET 请求
response = requests.get(url, headers=headers) response = requests.get(url, headers=headers)
html = response.text html = response.text
# 使用 findall 函数来获取数据 # 使用 findall 函数来获取数据
# 公司名 # 公司名
company = re.findall('<a.*?target="_blank">(.+?)</a></h3>', html) company = re.findall('<a.*?target="_blank">(.+?)</a></h3>', html)
# 注册资本 # 注册资本
money = re.findall('<em>(.+?)</em>市值</div>', html) money = re.findall('<em>(.+?)</em>市值</div>', html)
pageOne = list(zip(company, money)) pageOne = list(zip(company, money))
# 合并列表 # 合并列表
message.extend(pageOne) message.extend(pageOne)
import csv import csv
with open("content.csv", "w",encoding="utf-8") as f: with open("content.csv", "w",encoding="utf-8") as f:
w = csv.writer(f) w = csv.writer(f)
w.writerows(message) w.writerows(message)
import pandas as pd import pandas as pd
# 读取数据 # 读取数据
df = pd.read_csv("content.csv", names=["company", "money"]) df = pd.read_csv("content.csv", names=["company", "money"])
df.head() df.head()
df.info() df.info()
df1 = df.groupby("money").count()["company"] df1 = df.groupby("money").count()["company"]
top20=df.sort_values(by='money',ascending=False).head(20) top20=df[:20]
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一替换sans-serif字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一替换sans-serif字体
plt.rcParams['axes.unicode_minus'] = False # 步骤二(解决坐标轴负数的负号显示问题) plt.rcParams['axes.unicode_minus'] = False # 步骤二(解决坐标轴负数的负号显示问题)
plt.figure(figsize=(10, 6)) # 设置图像大小 plt.figure(figsize=(10, 6)) # 设置图像大小
plt.bar(top20['company'], top20['money'], color='skyblue') # 绘制条形图 plt.bar(top20['company'], top20['money'], color='skyblue') # 绘制条形图
plt.title('市值最多的公司TOP20') # 设置标题 plt.title('市值最多的公司TOP20') # 设置标题
plt.xlabel('公司名称') # 设置x轴标签 plt.xlabel('公司名称') # 设置x轴标签
plt.ylabel('市值') # 设置y轴标签 plt.ylabel('市值') # 设置y轴标签
plt.xticks(rotation=45) # 设置x轴标签旋转角度以便更好地显示 plt.xticks(rotation=45) # 设置x轴标签旋转角度以便更好地显示
plt.tight_layout() # 调整布局,避免标签重叠 plt.tight_layout() # 调整布局,避免标签重叠
plt.show() # 显示图像 plt.show() # 显示图像
Loading…
Cancel
Save