社区所有版块导航
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 年前 • 404 次点击  

NO.220

2020.09.23

工欲善其事,必先利其器


//


  - 前言 -  

◆ ◆ ◆ ◆


由于爬虫涉及较多网络专用术语,而小咖也仅是单纯一金融民工,因此这里就直接将网络上对于这些关键术语的定义展示给大家,如果感兴趣大家可以自行深度学习,而小咖的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(WindowsNT6.1;WOW64;rv:23.0)Gecko/20100101Firefox/23.0'}


(4)获取网页的HTML信息

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


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

res.encoding = 'utf-8'

资料来源:网页


第三步:创建一个Beautiful Soup对象

资料来源:西瓜财经资讯


(1)导入包

from bs4 import BeautifulSoup as bs


(2)利用BeautifulSoup对得到的html代码进行解析。下式第一个参数为需要提取数据的html,第二个参数是指定解析器。

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


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

资料来源:网页


(4)由于需要得到新闻标题,而网页上第一条新闻便是“林毅夫:构建新发展格局 机遇大于挑战”,所以搜索“构建新发展格局”快速定位。

资料来源:网页


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


根据上图源代码的特点,本步使用find_all方法,获得html信息中所有class属性为pic的div标签。


allnews = soup.find_all('div', class_="pic")


(6)具体新闻标题在class="pic"——img——alt下。根据如下语句,可以实验出bb的结果为'林毅夫:构建新发展格局 机遇大于挑战'。


for aa in allmovie[0].find_all('img'):

    bb=aa['alt']

'林毅夫:构建新发展格局 机遇大于挑战'


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

资料来源:网页


本文具体语句如下:

#使用re模块的正则表达式去除标签

import re

reg = re.compile(']*>')


newslist = [] 

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

    for aa in allmovie[i].find_all('img'):

        news=reg.sub('',aa['alt'])

        newslist.append(news)

资料来源:西瓜财经资讯


第四步:利用词云展示标题

资料来源:西瓜财经资讯


本步骤使用pyecharts制作词云,具体方法见往期文章《Python金融应用之利用Pyecharts做动态图(五)——词云图》。

资料来源:西瓜财经资讯



参考资料:

https://blog.csdn.net/c406495762/article/details/60137956

https://blog.csdn.net/xmxt668/article/details/90597879


附录:

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