Py学习  »  Python

Python金融应用之爬虫(七)

西瓜财经资讯 • 6 年前 • 1103 次点击  

NO.233

2020.10.26

工欲善其事,必先利其器


//


  - 前言 -  

◆ ◆ ◆ ◆


今天,小咖带大家利用Python爬虫胡润百富榜,欢迎各位大佬后台留言交流。


由于爬虫涉及较多网络专用术语,而小咖也仅是单纯一金融民工,因此这里就直接将网络上对于这些关键术语的定义展示给大家,如果感兴趣大家可以自行深度学习,而小咖的Python系列将主要专注于各类python工具的金融应用。


1、爬虫:是一个可以自动化抓取网页、app内容的工具。其中,我们将讲到的是目前应用最广泛的搜索引擎网络蜘蛛,在python中录入网址既可以获取网页数据。


2、URL:是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。URL的格式由三部分组成:

(1)第一部分是协议:http/https/ftp/ws等等。

(2)第二部分是存有该资源的主机IP地址(有时也包括端口号),简单说就是网站的域名。

(3)第三部分是主机资源的具体地址,如目录和文件名:即网站的二级目录和信息列表页、资源页等等。


3、F12:在网页界面点击F12后会出现开发者工具,我们可以通过F12找到所需数据及其节点。主要模块为:

Elements:可以查看当前文档的DOM信息

Console:查看调试,也可直接写JS代码

Source:查看当前资源文件的(CSS,JS,IMAGE)

Network:查看网络请求


4、User Agent:User Agent的中文名为用户代理,简称UA,它的信息包括硬件平台、系统软件、应用软件和用户个人偏好等。有一些网站不喜欢被爬虫程序访问,所以会检测连接对象,如果发现是爬虫程序便会拒绝访问。因此,我们可以通过设置User Agent的来隐藏身份继而使得程序正常运行。


User Agent存放于Headers中,服务器就是通过查看Headers中的User Agent来判断是谁在访问。


5、爬虫相关库:

在Python3中,可以使用urllib.request和requests进行网页爬取。urllib库是python内置的,无需额外安装。而requests库是第三方库,需要自己安装。


Requests库:requests实现了HTTP协议中绝大部分功能,它提供的功能包括Keep-Alive、连接池、Cookie持久化、内容自动解压、HTTP代理、SSL认证、连接超时、Session等很多特性,最重要的是它同时兼容python2和python3。安装方法:

pip install requests


urllib库:同样可以用来处理http请求,但是相较而言requests库更加简洁且容易理解,因此这里暂不讨论此库。


Beautiful Soup库:解析获取的HTML信息。安装方法:

pip install beautifulsoup4



  - Python爬虫实例 -  

◆ ◆ ◆ ◆


第一步:安装各种包

资料来源:西瓜财经资讯


第二步:根据URL,获取网页的HTML信息

资料来源:西瓜财经资讯


(1)安装并导入requests包

pip install requests

import requests


(2)输入目标网页如下。但是,翻页后发现网页链接并未改变。此外,通过右键点击查看源代码后发现,代码中并没有出现我们需要的数据信息,比如搜索“马云”,显示搜到的个数为0。因此,这个网页的可用性有限。

http://www.hurun.net/CN/HuList/Index?num=3YwKs889SRIm。

资料来源:网络(胡润百富)

资料来源:网络(胡润百富)

资料来源:网络(胡润百富)


(3)由于上述网页无法直接获取所需信息,因此通过浏览器Network项查询表单参数。在网页上点击F12——选择network——选择all——如果没有显示则点击F5刷新——查看不同资源名称的preview。终于,在名称为22的资源下发现了本文所需要的信息。此时,再点击headers,查看请求头,发现对应的网址如下。

http://www.hurun.net/CN/HuList/ListJson/22

(下述第三个图即为此网址打开后的显示)

资料来源:网络(胡润百富)

资料来源:网络(胡润百富)

资料来源:网络(胡润百富)


(4)设置User Agent。

headers={'User-Agent':'Mozilla/5.0(WindowsNT 6.2;WOW64;rv:21.0)Gecko/20100101Firefox/21.0'}  


(5)获取网页的HTML信息

res=requests.get(url=target,headers=headers)


(6)将response对象转换为dict/list。

alldata = res.json()

资料来源:西瓜财经资讯


第三步:整理数据

资料来源:西瓜财经资讯


(1)alldata是一个list,具体显示如下。因此,我们可以通过循环,将不同项目的数据进行提取。


for i in range(0,len(alldata)):   

    ranklist.append(alldata[i]['Ranking'])

    wealthlist.append(alldata[i]['Wealth'])

    namelist.append(alldata[i]['NameCn'])

    birthlist.append(alldata[i]['Birthday'])

    firmlist.append(alldata[i]['CNameCn'])

    industrylist.append(alldata[i]['IndustryCn'])

资料来源:网页


第四步:整合成dateframe并进行统计

资料来源:西瓜财经资讯


(1)本部分将上述list整合成dataframe并进行统计,包括数据格式转换、排序、分组统计、切片等操作。由于语句较为基础,这里不再赘述。

资料来源:西瓜财经资讯


第五步:利用pyecharts进行数据可视化

资料来源:西瓜财经资讯

资料来源:西瓜财经资讯


(1)本步骤使用pyecharts制作柱状图,具体方法见往期文章《Python金融应用之利用Pyecharts做动态图——柱状图/折线图》。

资料来源:西瓜财经资讯

资料来源:西瓜财经资讯



附录:

下面列举Andriod、Firefox、Google Chrome、iOS的一些User Agent,直接copy就能用。


1.Android


Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19


Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30


Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-P1000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1


2.Firefox


Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0


Mozilla/5.0 (Android; Mobile; rv:14.0) Gecko/14.0 Firefox/14.0


3.Google Chrome


Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36


Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19


4.iOS


Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3


Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A101a Safari/419.3



  - 后言 -  

◆ ◆ ◆ ◆

后续,小咖不仅将更新市场分析观点,也将不时推出利用Excel(VBA)、python等工具提升金融分析效率的小贴士,欢迎大家关注公众号,一同讨论及分享。


往期回顾:

一文看懂《积极型资产配置指南》的资产配置逻辑(全)

一文看懂基金风险及基金风险管理(上)

多周期资产配置法及大类资产配置应用(全)

从《我在高盛的经济预测法》来看如何根据经济指标进行投资

2020半年度大类资产及基金表现盘点

全面解读债券收益率曲线(全)

中债估值/YY估值的分析与对比

如何从护城河角度识别伟大的公司?(更)

最全!黄金行情与金价决定因素分析

美林时钟深度理解及在国内市场的应用(全)

一文看懂股债跷跷板效应

从本轮人民币对美贬值看汇率历史走势和影响因素(全)

中美股指历史走势对比及未来展望

Python金融应用之爬虫(一)

Python金融应用之爬虫(二)

Python金融应用之爬虫(三)

Python金融应用之爬虫(四)

Python金融应用之爬虫(五)

Python金融应用之爬虫(六)

Python金融应用之提取交易日+合并截面数据

python量化入门(一)——利用特定指标筛选股票并回测

python量化入门(二)——如何确定基金的市值属性和风格属性(全)

Python金融应用之基金业绩评价体系构建

Python金融应用之利用Pyecharts做动态图——柱状图/折线图

Python金融应用之利用Pyecharts做动态图(二)——饼图/散点图

Python金融应用之利用Pyecharts做动态图(三)——地图

Python金融应用之利用Pyecharts做动态图(四)——玫瑰图

Python金融应用之利用Pyecharts做动态图(五)——词云图

Python金融应用之雷达图制作

Python金融应用之制作热力图

Python金融应用之制作词云

Python金融应用之图表制作(八)——三维图

Python金融应用之图表制作(七)——蜡烛图

Python金融应用之图表制作(六)——色阶图

Python金融应用之图表制作(五)——合并图

Python金融应用之图表制作(四)——饼图

Python金融应用之图表制作(三)——散点图

Python金融应用之图表制作(二)——折线图

Python金融应用之图表制作(一)——柱状图

利用工具自动撰写报告(Python)——进阶版(一)

利用工具自动撰写报告(Python/Excel)——入门版











end


公众号:西瓜财经资讯

撰稿人:安静的金融美女子


记得点个在看哦

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/74664