我试图在不使用yahoo或nasdaq的情况下获取收入日历信息,因为它们并不总是准确的。

彭博网站的收入信息位于以下网址:
https://www.bloomberg.com/markets/earnings-calendar/us

当我检查页面的html源代码时,我发现了控制日期选择日历工具的html代码块,并检查了一些我标记为EV#1,EV#2,EV#3和EV的事件代码。 #4供参考。

<div data-view-uid="1|0_5_9_1"> <----EV#1
    <div class="date-picker">  <--EV#2
        <input id="datepicker" value="04/10/2018" class="hasDatepicker" type="text"> <--EV#3
        <button type="button" class="ui-datepicker-trigger">button</button> <----EV#4
    </div>
</div>


我发现每个这些EV#n事件都引用一些处理点击事件的jQuery代码。

当我在每个EV#n的Web检查器中突出显示与事件相关的工具箱时,我会看到带有jQuery或冒泡DOM2的代码描述。

我不知道这些是什么意思,但在现阶段也许并不那么重要。我已经包含了说明,以及与以下代码对应的EV#。也许是有帮助的。

jQuery的(EV#1)

tellMeTheSelectedDate: function() {
r.locale(this.locale);
var e = this.$datePicker().datepicker("getDate"),
t = r(e).format("L");
a.log(t)
}


冒泡的DOM2:(EV#1,EV#2,EV#3,EV#4)

function An(e) {
  if (Gi) {
    var t = Cn(e);
    if (t && this.id == t.id) {
      var n = In(t);
      if (n && kn(e)) {
        var r = Rn(n);
        r.PX263 = d(t), re("PX217", r), ji++, Fi <= ji && (Gi = !1, Dn(!1))
      }
    }
  }
}


冒泡的DOM2:(EV#1,EV#4)

u = b.handle = function(e) {
return typeof d === R || e && d.event.triggered === e.type ? void
0 : d.event.dispatch.apply(u.elem, arguments)
}


jQuery的:(EV#4)

function() {
return e.datepicker._datepickerShowing &&
e.datepicker._lastInput === t[0] ? e.datepicker._hideDatepicker()
: e.datepicker._datepickerShowing && e.datepicker._lastInput !==
t[0] ? (e.datepicker._hideDatepicker(),
e.datepicker._showDatepicker(t[0])) :
e.datepicker._showDatepicker(t[0]), !1
}


目标:

我没有使用JQuery的经验,但是我知道它使用CSS描述符来动态更改Web内容。

我是否可以使用Requests并通过修改存储在日历工具中的该值的变量来发送“选择日期”(日期字符串)到日期选择小部件,以便页面刷新(对吗?)并显示收入表中的信息基于我通过脚本传递的日期?

我是否需要模拟“点击”事件以使页面更新为我的日期?

使用bs4从表中获取数据没有问题,但是我的主要问题是日期选择。

提前致谢

最佳答案

如果在浏览器(F12)中打开开发人员工具并转到“网络”选项卡,则可以在更改日历上的日期时嗅探页面正在发出的请求。为此,您可以将任意日期作为URL参数传递:

https://www.bloomberg.com/markets/api/calendar/earnings/US?locale=en&date=2018-04-30

关于javascript - 动态生成表格时,如何使用Python BeautifulSoup来获取表格信息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49745973/

10-12 16:08