社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python金融应用之爬虫(六)

西瓜财经资讯 • 3 年前 • 497 次点击  

NO.228

2020.10.13

工欲善其事,必先利其器


//


  - 前言 -  

◆ ◆ ◆ ◆


由于爬虫涉及较多网络专用术语,而小咖也仅是单纯一金融民工,因此这里就直接将网络上对于这些关键术语的定义展示给大家,如果感兴趣大家可以自行深度学习,而小咖的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)输入目标网页。

资料来源:网络(网易财经)


(3)设置User Agent。

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


(4)获取网页的HTML信息

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


(5)为了防止乱码将unicode编码的字符串转换成utf-8编码。网页的编码,可以在网页上点击右键“编码”查看。

res.encoding = 'utf-8'

资料来源:网页


(6)创建一个Beautiful Soup对象。首先用from bs4 import BeautifulSoup as bs导入库,再利用BeautifulSoup对得到的html代码进行解析。下式第一个参数为需要提取数据的html,第二个参数是指定解析器。

soup = bs(res.text, 'html.parser')


(7)在网页上点击右键——“查看源代码”,即可以得到我们如下网页信息:

资料来源:网页


(8)根据数据特点,使用find_all方法,找到所有标签为div且class为inner_box的情况。


注:HTML标签是HTML语言最重要的组成部分,也是最基本的单位。如上图的div便是HTML标签,而id和class为标签的属性,其赋值便是标签的属性值,一个属性对应一个属性值,进而用来区分不同的div标签。find_all方法的第一个参数是要获取的标签名,第二个参数id或者class_是标签的属性(Python中class是关键字,所以用class_加以区分)。


具体语句为:


allitem=soup.find_all('div',class_="inner_box") 


第三步:去除html标签

资料来源:西瓜财经资讯


(1)上述获取的allitem有两项,年报内容主要在第二项即allitem[0]中。可以发现allitem[0]含有大量特殊字符,主要有“ ”以及“
”。因此,考虑使用正则表达式去除这些特殊字符。

资料来源:网页


(2)正则表达式是对字符串操作的一种逻辑公式,可以达到如下的目的:给定的字符串是否符合正则表达式的过滤逻辑(“匹配”);从文本字符串中获取我们想要的特定部分(“过滤”)。


re.sub是个正则表达式的函数,用来实现比普通字符串的replace更加强大的替换功能。


re.sub(pattern,repl,string,count=0, flags=0)


——pattern,表示正则中的模式字符串

——repl,就是replacement,被替换的字符串,也可以是函数。

——string,即表示要被处理,要被替换的那个string字符串。

——count参数,可以只处理其中一部分匹配到的内容。

——flags,作为编译标志可以修改正则表达式的一些运行方式。

资料来源:网页


reg = re.compile('')  #匹配“
”,释义见下图

reg1 = re.compile('\W[a-z]*\W') #匹配“ ”,释义见下图


news=reg.sub('',str(allitem[1]))   #将“
”替换为空

news1=reg1.sub('',news)  #将“ ”替换为空


注:运行news=reg.sub('',allitem[1])时,可以发现结果返回TypeError: expected string or bytes-like object,说明数据类型不匹配,此时将allitem[1]改为str(allitem[1])即可。


第四步:导出文件到Word

资料来源:西瓜财经资讯


(1)本部分需要安装新的库docx,具体步骤如下:


——在cmd中输入pip install docx

(windows+R,然后输入cmd既可打开)


——在python中运行import docx,如果出现No module named 'exceptions'则继续进行如下步骤,如果未提示错误则直接忽略后续内容。


——在cmd中输入pip uninstall docx (把原来安装的docx卸载掉)


——从如下网址中下载python_docx-0.8.10-py2.py3-noneany

https://www.lfd.uci.edu/~gohlke/pythonlibs/


——将上述文件放于系统默认文件夹中。


——在cmd中输入pip install python_docx-0.8.6-py2.py3-none-any.whl


(2)安装成功后,具体可以进行如下步骤:


import docx                        #导入docx库

doc = docx.Document()        #建立docx文件

doc.add_paragraph(news1)   #添加具体内容

doc.save('C:/Users/juanjuan/Desktop/西瓜财经资讯/20201012 爬虫(六)/文字提取结果.docx')     #在特定路径中中保存文件

资料来源:word,西瓜财经资讯



附录:

下面列举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金融应用之利用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/74319
 
497 次点击