From b5fd209ee3564f8637125425a89d6a03f524edbb Mon Sep 17 00:00:00 2001 From: hnu202110040421 <1608448424@qq.com> Date: Thu, 2 Jun 2022 17:20:44 +0800 Subject: [PATCH] =?UTF-8?q?Update=20=E4=B8=AD=E5=9B=BD500=E5=BC=BA?= =?UTF-8?q?=E5=85=AC=E5=8F=B8=E4=BF=A1=E6=81=AF=E7=88=AC=E5=8F=96.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 中国500强公司信息爬取.py | 184 +++++++++++++++--------------- 1 file changed, 92 insertions(+), 92 deletions(-) diff --git a/中国500强公司信息爬取.py b/中国500强公司信息爬取.py index ce2c7bf..73e9cd9 100644 --- a/中国500强公司信息爬取.py +++ b/中国500强公司信息爬取.py @@ -1,93 +1,93 @@ -import requests -# 设置请求头信息 -headers = { - "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.47" -} -import re -# 存储内容 -message = [] -# 总共16个页面的数据 -for page in range(16): - # 组装url # 请求的url - if page == 0: - # https://top.chinaz.com/gongsitop/index_500top.html - url = "https://top.chinaz.com/gongsitop/index_500top.html" - else: - # https://top.chinaz.com/gongsitop/index_500top_2.html - 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) - # 注册资本 - # 注册资本:1210.71亿元

- money = re.findall('注册资本:(.*?)

', html) - # 对应项目的信息进行打包 - pageOne = list(zip(company, money)) - # 合并列表 - message.extend(pageOne) -import csv -with open("content01.csv", "w") as f: - w = csv.writer(f) - w.writerows(message) -import pandas as pd -# 读取数据 -df = pd.read_csv("content01.csv", names=["company", "money"], encoding='gbk') -# 填充空元素 -df = df.fillna('0') -# 注册资本单位转换 -company_all=list(df['company']) -money_all=list(df['money']) -money_all_number=[] -for i in money_all: - p='' - for j in i: - if j in '0123456789.': - p=p+j - p=float(p) - if '万' in i: - p=int(p*10000+0.5) - if '亿' in i: - p=int(p*100000000+0.5) - # 汇率取自2022年5月26日 - if '美元' in i: - p=int(p*6.7388+0.5) - if '港' in i: - p=int(p*0.8585+0.5) - money_all_number.append(p) -data={'company':company_all,'money':money_all_number} -df=pd.DataFrame(data) -df=df.sort_values(by=['money'],ascending=False) -# 取注册资本最多的前二十公司名称和注册资本 -company_top20=df.iloc[0:20,0] -money_top20=df.iloc[0:20,1] - -#公司名称竖状表示 -company_top20_y=[] -for i in company_top20: - s='' - for j in i: - p=j - if j=='(': - p='︵' - if j==')': - p='︶' - s=s+p+'\n' - company_top20_y.append(s) - -# 在jupyter中直接展示图像 -import matplotlib.pyplot as plt -# 步骤一(替换sans-serif字体) -plt.rcParams['font.sans-serif'] = ['SimHei'] -# 步骤二(解决坐标轴负数的负号显示问题) -plt.rcParams['axes.unicode_minus'] = False -plt.bar(range(20),money_top20) -plt.xticks(range(20),company_top20_y) -plt.yticks([5e10,10e10,15e10,20e10,25e10,30e10,35e10],['5亿','10亿','15亿','20亿','25亿','30亿','35亿']) -plt.ylabel('注册资金') -plt.title('中国500强公司注册资金前二十的公司及注册资金示意图') +import requests +# 设置请求头信息 +headers = { + "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.47" +} +import re +# 存储内容 +message = [] +# 总共16个页面的数据 +for page in range(16): + # 组装url # 请求的url + if page == 0: + # https://top.chinaz.com/gongsitop/index_500top.html + url = "https://top.chinaz.com/gongsitop/index_500top.html" + else: + # https://top.chinaz.com/gongsitop/index_500top_2.html + 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) + # 注册资本 + # 注册资本:1210.71亿元

+ money = re.findall('注册资本:(.*?)

', html) + # 对应项目的信息进行打包 + pageOne = list(zip(company, money)) + # 合并列表 + message.extend(pageOne) +import csv +with open("content01.csv", "w") as f: + w = csv.writer(f) + w.writerows(message) +import pandas as pd +# 读取数据 +df = pd.read_csv("content01.csv", names=["company", "money"], encoding='gbk') +# 填充空元素 +df = df.fillna('0') +# 注册资本单位转换 +company_all=list(df['company']) +money_all=list(df['money']) +money_all_number=[] +for i in money_all: + p='' + for j in i: + if j in '0123456789.': + p=p+j + p=float(p) + if '万' in i: + p=int(p*10000+0.5) + if '亿' in i: + p=int(p*100000000+0.5) + # 汇率取自2022年5月26日 + if '美元' in i: + p=int(p*6.7388+0.5) + if '港' in i: + p=int(p*0.8585+0.5) + money_all_number.append(p) +data={'company':company_all,'money':money_all_number} +df=pd.DataFrame(data) +df=df.sort_values(by=['money'],ascending=False) +# 取注册资本最多的前二十公司名称和注册资本 +company_top20=df.iloc[0:20,0] +money_top20=df.iloc[0:20,1] + +#公司名称竖状表示 +company_top20_y=[] +for i in company_top20: + s='' + for j in i: + p=j + if j=='(': + p='︵' + if j==')': + p='︶' + s=s+p+'\n' + company_top20_y.append(s) + +# 在jupyter中直接展示图像 +import matplotlib.pyplot as plt +# 步骤一(替换sans-serif字体) +plt.rcParams['font.sans-serif'] = ['SimHei'] +# 步骤二(解决坐标轴负数的负号显示问题) +plt.rcParams['axes.unicode_minus'] = False +plt.bar(range(20),money_top20) +plt.xticks(range(20),company_top20_y) +plt.yticks([5e10,10e10,15e10,20e10,25e10,30e10,35e10],['500亿','1000亿','1500亿','2000亿','2500亿','3000亿','3500亿']) +plt.ylabel('注册资金') +plt.title('中国500强公司注册资金前二十的公司及注册资金示意图') plt.show() \ No newline at end of file