Python:爬虫财经数据-selenium

最近十年中,各类因果推断方法层出不穷。令人欣喜的同时,也让很多人无所适从。虽然借助 Stata,R,Python 等软件很容易「跑出」结果,但很多人应该都经历过如下「囧境」:

  • 虽然有很多方法可以用,但由于不清楚原理,不知道该用哪个?

  • 虽然自己很努力地跑代码、看文献,但总感觉没啥实质性进展,有一种「有劲没处使」的无力感;

  • 很像看看 QJE,AER,JoE,JASA 上那些牛逼的方法,但「一开始就懵了」……。

根源何在?可能是没有清晰地理解「基本概念」,比如条件期望,条件独立,无偏性以及 FWL 定理等。基础不牢,便会导致举步维艰。事实上,一旦理清基本概念和模型,后续的 Lasso,双重机器学习 (DML) 等听起来很高深的东西都不再困难,因为它们都是基础知识和理论的组合和延伸而已。

庄子所言「水之积也不厚,则其负大舟也无力」也正是这个意思。

为此,强基班 的目的在于巩固基础,理清 条件期望函数条件独立反事实架构选择偏差 等基本概念;理解 识别估计统计推断 的差别。进而在因果推断的架构下讲解 OLS,IV,FE 以及 DID 等方法,让大家能够「选择合适的方法、做出合理的解释」。


编者按:本文参考自 Bryan Pfalzgraf 的 How to Use Selenium to Web-Scrape with Example,以及连享会课程 文本分析-爬虫-机器学习,特此致谢!

本推文将以爬取世界主要股票指数为例,简要介绍 Python 爬虫的方法。

1. Selenium

现在,很多网页通过使用 JavaScript 的 Ajax 技术实现了网页内容的动态改变。在碰到动态页面时,一种方法是精通JavaScript,并使用浏览器跟踪浏览器行为,分析 JavaScript 脚本,进而使用以上的方法模拟浏览器请求。但是这种方法非常复杂,很多时候 JavaScript 可能会复杂到一定程度,使得分析异常困难。

另外一种方法是使用 Selenium 直接调用浏览器,浏览器自动执行 JavaScript,然后调用浏览器的 HTML 即可。这种方法非常方便,但是速度异常之慢。

为了实现这一方法,我们首先要安装 seleniumpip install seleniumselenium 是 Python 中用来自动调用浏览器的一个包,在从网页中爬取数据的过程中可以不需要我们自己去寻找真正的网页源代码。

selenium 中一个重要的类是 webdriver,它能够自动化地打开一个网页,帮助我们自动化进行浏览网页。webdriver 支持 Google Chrome,Internet Explorer,Firefox,Safari 和 Opera。

这里以一个爬取 NBA 球员薪酬网站为例,简要说明 selenium 的使用方法。首先我们需要定义一个 driver 的变量,用来爬取数据的引擎。

from selenium import webdriver  
from selenium.webdriver.common.keys import Keys  
import pandas as pd  
driver = webdriver.Chrome()  

然后我们需要使用 Python 去打开一个我们想要爬取的网站。

driver.get('https://hoopshype.com/salaries/players/')  

接下来我们需要定位爬取信息的位置,为了提取需要的信息,我们需要定位到这个信息元素的 XPath。XPath 是一个用来寻找一个网页中任何元素的语法,为了找到 XPath, 我们需要右击鼠标,然后选择 检查(inspect)

我们可以看到 Stephen Curry 的 HTML 代码是:

<td class=”name”>
<a href=”https://hoopshype.com/player/stephen-curry/salary/">
Stephen Curry </a>
</td>

在将其转换成 XPath 之前,让我们再检查一下另外一个明星 Russell Westbrook:

<td class=”name”>
<a href=”https://hoopshype.com/player/russell-westbrook/salary/">
>Russell Westbrook </a>
</td>

可以看到两者的相似之处在于 <td class=”name”>,也就是说我们可以据此来得到所有明星的名字。我们将其转换为 XPath: //td[@class=”name”]。所有的 XPath 以两条 // 开始,然后我们需要 td 标签,以及 td 标签下的 name 类。

from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://hoopshype.com/salaries/players/')
players = driver.find_elements(By.XPATH, '//td[@class="name"]')
players_list = []
for p in range(len(players)):
    players_list.append(players[p].text)

通过相同的办法,我们也可以找到这些球星的薪水。

salaries_list = []
for item in salaries:
    salaries_list.append(item.text)
df = pd.DataFrame(list(zip(players_list, salaries_list)))

在这里插入图片描述

2. 爬取雅虎财经数据

在了解如何使用 Selenium 之后,我们来爬取 Yahoo Finance 中的 世界主要股票指数。这次我们选择的浏览器是微软的 Edge 浏览器:

driver2 = webdriver.Edge()  

这次采取和前文爬取 NBA 明星薪酬数据不太相同的方法,我们引入了 BeautifulSoup 包,将网页的 HTML 爬取下来。

driver2.get("https://finance.yahoo.com/world-indices/")
html2 = driver2.execute_script('return document.body.innerHTML;')
soup2 = BeautifulSoup(html2,'lxml')

接下来,我们按照前文的办法寻找对应的标签,以及标签下面的类,分别获得指数简称,指数全称,实时价格,价格数值变化,价格的百分比变化,以及成交量.

indices = [entry.text for entry in \
    soup2.find_all("a", {"class":"Fw(600) C($linkColor)"})]
names = [item.text for item in \
    soup2.find_all("td", {"class":"Va(m) Ta(start) Px(10px) Fz(s)","aria-label":"Name"})]
lastprice = [entry.text for entry in \
    soup2.find_all("fin-streamer", {"data-test":"colorChange", "data-field":"regularMarketPrice"})]
change = [entry.text for entry in \
    soup2.find_all("td", {"class":"Va(m) Ta(end) Pstart(20px) Fw(600) Fz(s)", "aria-label":"Change"})]
perc_change = [entry.text for entry in \
    soup2.find_all("td", {"class":"Va(m) Ta(end) Pstart(20px) Fw(600) Fz(s)", "aria-label":"% Change"})]
volumne = [item.text for item in \
    soup2.find_all("td", {"class":"Va(m) Ta(end) Pstart(20px) Fz(s)", "aria-label":"Volume"})]
df2 = pd.DataFrame((list(zip(indices, names, lastprice, change, perc_change, volumne))), \
    columns=["indices", "names", "lastprice", "change", "perc_change", "volume"])

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
若有侵权,请联系删除
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值