BeautifulSoup4:缺少解析表数据

时间:2014-10-21 11:45:59

标签: python web-scraping beautifulsoup

我试图通过Beautiful this page中的BeautifulSoup 4提取每股收益数据。

当我解析数据时,使用默认的lxml和HTML 5解析器缺少表信息。我相信这与Javascript有关,我一直在尝试实现PyV8将脚本转换为BS4的可读HTML。问题是我不知道从哪里开始。

你知道这是不是我的问题?我一直在阅读很多帖子,这对我来说是一个非常头疼的问题。以下是一个简单的例子。 financeWrap包含表信息,但beautifulSoup显示它是空的。

import requests
from bs4 import BeautifulSoup

url = "http://financials.morningstar.com/ratios/r.html?t=AAPL&region=usa&culture=en-US"

response = requests.get(url)
soup_key_ratios = bs(response.content, 'html5lib')
financial_tables = soup_key_ratios.find("div", {"id":"financeWrap"})
print financial_tables

# Output: <div id="financeWrap">
#           </div>

1 个答案:

答案 0 :(得分:2)

问题是您正在尝试通过网站上的Ajax获取数据。如果您转到您提供的链接,并通过浏览器查看来源,您会发现该数据不应包含任何内容。

但是,如果您使用控制台管理器,例如Firebug,您将看到对以下URL发出了Ajax请求,这是您可以通过beautifulsoup解析的(也许 - 我没有尝试或查看数据结构。)

请注意,这很可能是针对网站的ToS。