【发布时间】:2022-01-05 16:59:09
【问题描述】:
我正在尝试从 zacks.com 的表格中抓取收入日历数据,网址附在下面。
https://www.zacks.com/stock/research/aapl/earnings-calendar
问题是我试图从表中抓取所有数据,但它有一个下拉列表可以选择页面上的 10、25、50 和 100 行。理想情况下,我想抓取所有 100 行,但是当我从下拉列表中选择 100 时,url 不会改变。我的代码如下。
要注意该网站阻止了用户代理,因此我不得不使用 chrome 驱动程序来模拟访问网络的人。从 pd.read_html 获得的结果是所有表的列表,并且 d[4] 返回只有 10 行的收益日历(我想将其更改为 100)
driver = webdriver.Chrome('../files/chromedriver96')
symbol = 'AAPL'
url = 'https://www.zacks.com/stock/research/{}/earnings-calendar'.format(symbol)
driver.get(url)
content = driver.page_source
d = pd.read_html(content)
d[4]
所以请任何人帮助来指导我
谢谢!
更新:由于缺乏清晰的表述和显示过去研究的证据,我的上一篇文章似乎被降级了。也许我仍然是在这个网站上发布问题的新手。实际上,我已经找到了几个页面,包括这个 page 有同样的问题,但解决方案似乎对我不起作用,这就是为什么我来发布这个作为一个新问题
更新 12/05: 非常感谢您的建议。正如下面评论的那样,我终于让它工作了。下面是我使用的代码
dropdown = driver.find_element_by_css_selector('#earnings_announcements_earnings_table_length')
time.sleep(1)
hundreds = dropdown.find_element_by_xpath(".//option[. = '100']")
hundreds.click()
【问题讨论】:
-
查看可能发生的情况的一种方法是在浏览器的开发控制台中,查看当您从下拉菜单中的 10 更改为 100 时该页面发出的请求。当我看到这个时,页面似乎没有提出任何新请求。对我来说,这表明这 100 行已经存储在 javascript 中,并且仅在用户更改显示选项时显示。
-
没错。我做了同样的事情,但看到的和你看到的一样,即没有新的请求。关于如何从 javascript 中取出数据的任何想法?
标签: python web-scraping web-crawler