【问题标题】:Can't find the contents of a 'div' using BeautifulSoup使用 BeautifulSoup 找不到“div”的内容
【发布时间】:2015-04-29 20:19:36
【问题描述】:

我正在尝试从 MLB 网站上抓取有关 MLB 球员的一些信息。 但是,使用 urllib2 和 BeautifulSoup,我在 'div' 下找不到内容。但我可以清楚地看到 Chrome 上的内容。

例如,转到页面 (http://mlb.mlb.com/team/player.jsp?player_id=150378)。右上角的状态信息显示“已发布”。但我无法使用 BS4 找到此字符串/内容。

这是我的代码:

base_url = 'http://mlb.mlb.com/team/player.jsp?player_id=150378'
request = urllib2.Request(base_url)
response = urllib2.urlopen(request)
soup = BeautifulSoup(response)
player_status = soup.findAll('div',id='player_status')
print player_status

我期待它有一个像“状态:已发布”这样的字符串, 但结果只显示

[<div id="player_status"></div>]

我以前从未遇到过这个问题。有人可以帮我弄这个吗? 谢谢!!

【问题讨论】:

    标签: python web-scraping beautifulsoup


    【解决方案1】:

    页面上的玩家信息来自对 JSON API 的附加 XHR 请求的响应。你可以模拟它,例如,使用requests:

    >>> import requests
    >>> 
    >>> url = "http://mlb.mlb.com/lookup/json/named.player_info.bam?sport_code=%27mlb%27&player_id=150378"
    >>> 
    >>> response = requests.get(url)
    >>> data = response.json()
    >>> data['player_info']['queryResults']['row']['status']
    Released
    

    【讨论】:

    • 谢谢!但是如果我也想得到他的职业数据呢?另外,为什么你的网址和我的不一样?你怎么得到那个网址?谢谢!
    • @Jason 页面数据是通过一组对不同 API 端点的异步调用动态构建的 - 您可以在浏览器开发人员工具 - 网络选项卡中观察它们。
    • 谢谢!!我不太熟悉 API 的概念以及该网站如何调用不同的 API 来检索信息,以及如何使用网络选项卡。您能否向我推荐任何可以教授并让我开始学习的链接?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 2014-10-26
    • 2019-11-10
    • 1970-01-01
    • 2017-06-25
    • 2018-06-24
    相关资源
    最近更新 更多