【问题标题】:Identifying DJIA data using Beautiful Soup使用 Beautiful Soup 识别 DJIA 数据
【发布时间】:2019-05-02 02:59:51
【问题描述】:

我对编码相当陌生,正在尝试编写一个脚本,该脚本将在运行时按时间间隔提取市场数据,然后比较每次拉取之间的增量并通知用户更改 - 寻找简单的转变,比如说>.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

据我所知并且运气不佳,查找功能似乎没有从网站返回任何内容 - 寻找任何可能帮助我走上正轨的轻推

p>
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")

我希望这会返回第一个跨度标签,以便稍后我可以深入研究 DJIA 数据:“

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

但脚本运行并没有返回任何内容

【问题讨论】:

    标签: python html web-scraping beautifulsoup


    【解决方案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)
    

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

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

    其中有用于刷新该值的 js。在那里你可以看到列出的报价来源网址。

    包含以下内容的响应:

    【讨论】:

    • 太棒了!非常感谢!我稍作修改,因为我在使用 'lxml' r = requests.get('quotes.wsj.com/index/DJIA?mod=mdc_uss_dtabnk') soup = bs(r.content, 'html.parser') djia = soup.find(id=' quote_val').get_text() print(djia)
    • 现在我需要添加一个定时重复,然后计算差异,你认为这是一个运行的逻辑函数吗? #import time, threading #WAIT_SECONDS = 60 #def djiaGet(): # print(time.ctime()) # print(djia) # threading.Timer(WAIT_SECONDS, djiaGet).start() #djiaGet()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    相关资源
    最近更新 更多