From ab9e8604ee8933111fd2e06363d16340512f2d09 Mon Sep 17 00:00:00 2001
From: hnu202410040233 <3571724693@qq.com>
Date: Sun, 18 May 2025 13:59:11 +0800
Subject: [PATCH] ADD file via upload
---
homework.py | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 77 insertions(+)
create mode 100644 homework.py
diff --git a/homework.py b/homework.py
new file mode 100644
index 0000000..9d7c057
--- /dev/null
+++ b/homework.py
@@ -0,0 +1,77 @@
+#####请在以下代码块填写爬虫代码
+import requests
+import re
+url = "https://top.chinaz.com/gongsitop/index_500top.html"
+# 设置请求头信息
+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"
+}
+# 使用reqeusts模快发起 GET 请求
+response = requests.get(url, headers=headers)
+# 获取请求的返回结果
+html = response.text
+html
+# 使用 findall 函数来获取数据
+# 公司名
+company = re.findall('(.+?)', html)
+# 法定代表人
+person = re.findall('法定代表人:(.+?)
', html)
+# 注册时间
+signDate = re.findall('注册时间:(.+?)', html)
+# 证券类别
+category = re.findall('证券类别:(.+?)', html)
+category
+# 存储内容
+message = []
+# 总共16个页面的数据
+for page in range(16):
+ # 组装url
+ if page == 0:
+ url = "https://top.chinaz.com/gongsitop/index_500top.html"
+ else:
+ url = "https://top.chinaz.com/gongsitop/index_500top_{}.html".format(page + 1)
+ # 使用reqeusts模快发起 GET 请求
+ response = requests.get(url, headers=headers)
+ html = response.text
+ # 使用 findall 函数来获取数据
+ # 公司名
+ company = re.findall('(.+?)', html)
+ # 法定代表人
+ person = re.findall('法定代表人:(.*?)', html)
+ # 注册时间
+ signDate = re.findall('注册时间:(.*?)', html)
+ # 证券类别
+ category = re.findall('证券类别:(.*?)', html)
+ pageOne = list(zip(company, person, signDate, category))
+ # 合并列表
+ message.extend(pageOne)
+message
+# 导入python中的内置模块csv
+import csv
+with open("content.csv", "w") as f:
+ w = csv.writer(f)
+ w.writerows(message)
+!cat content.csv
+import pandas as pd
+# 读取数据
+df = pd.read_csv("content.csv", names=["company", "person", "signDate", "category"])
+df.head()
+df.info()
+# 根据证券类型进行分组
+df1 = df.groupby("category").count()["company"]
+df1
+# 在jupyter中直接展示图像
+%matplotlib inline
+import matplotlib.pyplot as plt
+# 用黑体显示中文
+plt.rcParams['font.sans-serif'] = ['SimHei']
+# 每个扇形的标签
+labels = df1.index
+# 每个扇形的占比
+sizes = df1.values
+fig1, ax1 = plt.subplots()
+# 绘制饼图
+ax1.pie(sizes, labels=labels, autopct='%d%%',radius=2,textprops={'fontsize': 20},
+ shadow=False, startangle=90)
+ax1.axis()
+plt.show()
\ No newline at end of file