gpt4 book ai didi

python - Beautiful Soup 无法识别按钮标签

转载 作者:太空宇宙 更新时间:2023-11-03 11:52:09 24 4
gpt4 key购买 nike

我目前正在 Python 2.7.6 中试验 Beautiful Soup 4

现在,我有一个简单的脚本来抓取 Soundcloud.com。我正在尝试打印页面上按钮标签的数量,但没有得到预期的答案。

from bs4 import BeautifulSoup
import requests

page = requests.get('http://soundcloud.com/sondersc/waterfalls-sonder')
data = page.text

soup = BeautifulSoup(data)

buttons = soup.findAll('button')
print len(buttons)

当我运行它时,我得到了输出

num buttons = 0

这让我很困惑。我知道这个页面上存在按钮标签,因此它不应该返回 0。在检查波形正下方的按钮元素后,我发现这些...

<button class="sc-button sc-button-like sc-button-medium sc-button-responsive" tabindex="0" title="Like">Like</button>
<button class="sc-button sc-button-medium sc-button-responsive sc-button-addtoset" tabindex="0" title="Add to playlist">Add to playlist</button>
<button class="sc-button sc-button-medium sc-button-responsive sc-button-addtogroup" tabindex="0" title="Add to group">Add to group</button>
<button class="sc-button sc-button-share sc-button-medium sc-button-responsive" title="Share" tabindex="0">Share</button>

起初我认为我尝试查找按钮元素的方式不正确。但是,如果我修改代码以抓取任意 YouTube 页面...

page = requests.get('http://www.youtube.com/watch?v=UiyDmqO59QE')

然后我得到输出

num buttons = 37

所以这意味着 soup.findAll('button') 正在做它应该做的事情,只是不在 soundcloud 上。

我也试过指定我想要的确切按钮,期望得到返回结果 1

buttons = soup.findAll('button', class_='sc-button sc-button-like sc-button-medium sc-button-responsive')
print 'num buttons =', len(buttons)

但它仍然返回 0。

我有点被这个难住了。谁能解释这是为什么?

最佳答案

您无法获取按钮的原因是您获取的 html 中没有 button 标签:

>>> import requests
>>> page = requests.get('http://soundcloud.com/sondersc/waterfalls-sonder')
>>> data = page.text
>>> '<button' in data
False

这意味着在形成页面时涉及更多内容:AJAX 请求、javascript 函数调用等

另外,请注意 soundcloud 提供了一个 API - 无需抓取站点的 HTML 页面。还有一个python wrapper围绕可用的 Soundcloud API。

另外,注意网页抓取,学习Terms of Use :

You must not employ scraping or similar techniques to aggregate, repurpose, republish or otherwise make use of any Content.

关于python - Beautiful Soup 无法识别按钮标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23861493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com