- 使用python requests库爬取福布斯排行榜数据存放到本地excel文件,并通过matplotlab将数据进行分析和可视化
- 原网页如下所示 https://www.phb123.com/renwu/fuhao/shishi_1.html
- 保存的excel数据如下所示
- 福布斯前十排行的数据可视化效果
- 各个国家上榜人数所占比例的统计与可视化
- 爬取网页数据解析为一个list集合的代码
## 读取一页的数据
def loaddata(url):
from bs4 import BeautifulSoup
import requests
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/72.0.3626.121 Safari/537.36'
}
f = requests.get(url,headers=headers) #Get该网页从而获取该html内容
soup = BeautifulSoup(f.content, "lxml") #用lxml解析器解析该网页的内容, 好像f.text也是返回的html
# print(f.content.decode()) #尝试打印出网页内容,看是否获取成功
ranktable = soup.find_all('table',class_="rank-table" )[0] #获取排行榜表格
trlist = ranktable.find_all('tr') #获取表格中所有tr标签
trlist.pop(0) #去掉第一个元素
persionlist = []
for tr in trlist:
persion = {}
persion['num'] = tr.find_all('td')[0].string #编号
persion['name'] = tr.find_all('td')[1].p.string #名称
persion['money'] = tr.find_all('td')[2].string #财产
persion['company'] = tr.find_all('td')[3].string #企业
persion['country'] = tr.find_all('td')[4].a.string #国家
persionlist.append(persion)
print("页面"+url+"爬取成功")
return persionlist
## 读取所有福布斯排行榜数据
def loadalldata():
alldata = []
for i in range(1,16,1):
url = "https://www.phb123.com/renwu/fuhao/shishi_"+str(i)+".html"
data = loaddata(url)
alldata = alldata + data
return alldata
- 将爬取的list集合保存到本地excel文件的代码
## 将爬取的数据保存到文件
def savedata(path,persionlist):
import xlwt
w