Python金融应用之爬虫(二)

Python金融应用之爬虫(二)

首页冒险解谜死无对证安卓版更新时间:2024-09-21

NO.216

2020.09.20

工欲善其事,必先利其器

//

- 前言 -

◆ ◆ ◆ ◆

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

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)将utf-8编码的字符串转换成python下的unicode编码。网页的编码,可以在网页上点击右键“编码”查看。

data = res.content.decode('utf-8')

资料来源:网页

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

资料来源:西瓜财经资讯

(1)导入包

from bs4 import BeautifulSoup as bs

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

soup = bs(data, 'html.parser')

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

资料来源:网页

(4)由于需要得到电影信息,而网页上第一步电影便是“死无对证”,所以搜索“死无对证”快速定位。

资料来源:网页

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

本步使用find_all方法,获得html信息中所有class属性为nowplaying的div标签。从所有网页源代码来看只有一个id='nowplaying'的div标签,因此可以使用allmovie[0]来定位。

资料来源:网页

allmovie=soup.find_all('div',id='nowplaying')

(6)继续使用find_all方法,获得allmovie[0]中所有class属性为list-item的li标签。获得的数据便是各个电影的具体信息,最终得到的allmovie_list是一个列表。可以用print(allmovie_list[0])查看第一部电影的信息。

资料来源:网页

allmovie_list=allmovie[0].find_all('li',class_='list-item')

movielist = [] #创建空白list

for item in allmovie_list:

movielist_dict = {}

movielist_dict['ID'] = item['data-subject']

movielist_dict['电影名称'] = item['data-title'] movielist_dict['豆瓣评分'] = item['data-score']

movielist.append(movielist_dict)

资料来源:西瓜财经资讯

第四步:数据整理及展示

资料来源:西瓜财经资讯

(1)从movielist提取数据形成dateframe:

name=[]

score=[]

for item in movielist:

name.append(item['电影名称'])

score.append(item['豆瓣评分'])

df = pd.DataFrame(columns = ["电影名称","豆瓣评分"])

df["电影名称"]=name

df["豆瓣评分"]=score

df["豆瓣评分"]=df["豆瓣评分"].astype(float)

df=df.sort_values('豆瓣评分',axis = 0,ascending=0) #按豆瓣评分降序排列

(2)使用pyecharts 制作柱状图。具体使用方法见《Python金融应用之利用Pyecharts做动态图——柱状图/折线图》。

资料来源:西瓜财经资讯

参考资料:

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

附录:

下面列举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等工具提升金融分析效率的小贴士,欢迎大家关注公众号,一同讨论及分享。

end

公众号:西瓜财经资讯

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

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved