使用Beautiful Soup识别DJIA数据

时间:2019-05-02 02:59:52

标签: python html web-scraping beautifulsoup

我对编码还很陌生,我正在尝试编写一个脚本,该脚本将在运行时以一定的时间间隔提取市场数据,然后比较每次提取之间的差异并通知用户更改-假设是简单的变动在任何时间间隔内> .1%。

我最初的方法是使用Yahoo Finance或Barron's来运行Beautiful Soup脚本以获取发布的市场数据,因为两者似乎都具有HTML代码中可用的数据:

https://finance.yahoo.com/calendar

http://www.barrons.com/mdc/public/page/9_3000.html?mod=bol_mdc_topnav_9_3000

据我所知,运气不佳,find函数似乎并未从网站返回任何内容-寻找任何可以帮助我正确完成此任务的内容

from bs4 import BeautifulSoup

from urllib.request import urlopen

import requests


import pandas as pd

url = 'https://finance.yahoo.com/calendar'

page = urlopen(url)

soup = BeautifulSoup(page, 'html.parser')


soup.find("span")

我希望它会返回第一个span标签,以便以后可以在DJIA数据中进行细化:“

span class="Trsdu(0.3s) Fz(s) Mt(4px) Mb(0px) Fw(b) D(ib)" data-reactid="31">26,430.14</span

但是脚本运行并且什么也不返回

1 个答案:

答案 0 :(得分:1)

您可以使用bottom of your listed urls用于引用报价的相同网址

import requests
from bs4 import BeautifulSoup as bs

r = requests.get('https://quotes.wsj.com/index/DJIA?mod=mdc_uss_dtabnk')
soup = bs(r.content, 'lxml')
djia = soup.select_one('#quote_val').text
print(djia)

当您检查列出的原始底部网址的网络流量,然后重点关注该网址时,这很明显是来源

http://www.barrons.com/mdc/public/js/9_3001_Refresh.js

其中包含用于刷新该值的js。在那里,您可以看到列出的源URL进行报价。

包含以下内容的响应:

enter image description here