【问题标题】:How to find a specific HTML element using BeautifulSoup in Python如何在 Python 中使用 BeautifulSoup 查找特定的 HTML 元素
【发布时间】:2021-10-15 00:52:50
【问题描述】:

我有一个网站,我正在尝试使用请求和 BeautifulSoup 库从 HTML 中获取特定元素,但我很难找到匹配项。

代码是这样的:

from bs4 import BeautifulSoup
import requests

url = 'https://seekingalpha.com/symbol/AAPL/transcripts'

content = requests.get(url).content
soup = BeautifulSoup(content, "html.parser")

我试图从 Soup 对象中获取此特定标签 <div data-test-id="post-list"> 并尝试过:

soup.find_all('<div data-test-id="post-list">')

但是这会返回一个空列表[]。有人可以帮助我吗?

谢谢

【问题讨论】:

  • 请参阅this question 希望对您有所帮助。
  • 源码中没有&lt;div&gt;s 带有data-test-id 属性(可以在浏览器中查看-点击Ctrl+U)。您想获取什么信息?
  • 当使用find_all函数时,你应该只使用元素类型。例如:soup.find_all('div')。当我尝试这个时,有一个 div 显示:&lt;div class="noScriptTitle"&gt;Javascript is Disabled&lt;/div&gt;。您需要一种方法来执行 Javascript 来构建 HTML。

标签: python web-scraping beautifulsoup python-requests


【解决方案1】:

您在页面上看到的数据是从外部来源加载的。 (在源码中,没有&lt;div&gt;s带有data-test-id属性(可以在浏览器中查看——点击Ctrl+U搜索data-test-id)。

要从外部源加载数据,请尝试:

import json
import requests

api_url = "https://seekingalpha.com/api/v3/symbols/aapl/transcripts"
params = {
    "filter[until]": "undefined",
    "id": "aapl",
    "include": "author,primaryTickers,secondaryTickers,sentiments",
    "isMounting": "true",
    "page[size]": "20",
}

data = requests.get(api_url, params=params).json()

# pretty print the data:
# print(json.dumps(data, indent=4))

for d in data["data"]:
    print(
        "{:<50}  {}".format(d["attributes"]["title"][:50], d["links"]["self"])
    )

打印:

Apple Inc. (AAPL) CEO Tim Cook on Q3 2021 Results   /article/4441901-apple-inc-aapl-ceo-tim-cook-on-q3-2021-results-earnings-call-transcript
Apple Inc. (AAPL) CEO Tim Cook on Q2 2021 Results   /article/4422230-apple-inc-aapl-ceo-tim-cook-on-q2-2021-results-earnings-call-transcript
Apple Inc. (AAPL) CEO Tim Cook on Q1 2021 Results   /article/4401478-apple-inc-aapl-ceo-tim-cook-on-q1-2021-results-earnings-call-transcript
Apple Inc. (AAPL) CEO Tim Cook on Q4 2020 Results   /article/4382943-apple-inc-aapl-ceo-tim-cook-on-q4-2020-results-earnings-call-transcript
Apple Inc. (AAPL) CEO Tim Cook on Q3 2020 Results   /article/4362707-apple-inc-aapl-ceo-tim-cook-on-q3-2020-results-earnings-call-transcript
Apple Inc. (AAPL) CEO Tim Cook on Q2 2020 Results   /article/4341792-apple-inc-aapl-ceo-tim-cook-on-q2-2020-results-earnings-call-transcript
Apple Inc. (AAPL) CEO Tim Cook on Q1 2020 Results   /article/4319666-apple-inc-aapl-ceo-tim-cook-on-q1-2020-results-earnings-call-transcript
Apple Inc. (AAPL) CEO Tim Cook on Q4 2019 Results   /article/4300690-apple-inc-aapl-ceo-tim-cook-on-q4-2019-results-earnings-call-transcript
Apple, Inc. (AAPL) CEO Tim Cook On Q3 2019 Results  /article/4279301-apple-inc-aapl-ceo-tim-cook-on-q3-2019-results-earnings-call-transcript
Apple, Inc. (AAPL) CEO Tim Cook on Q2 2019 Results  /article/4258275-apple-inc-aapl-ceo-tim-cook-on-q2-2019-results-earnings-call-transcript
Apple Inc. (AAPL) CEO Tim Cook on Q1 2019 Results   /article/4236503-apple-inc-aapl-ceo-tim-cook-on-q1-2019-results-earnings-call-transcript
Apple (AAPL) Q4 2018 Results - Earnings Call Trans  /article/4217359-apple-aapl-q4-2018-results-earnings-call-transcript
Apple (AAPL) Q3 2018 Results - Earnings Call Trans  /article/4192790-apple-aapl-q3-2018-results-earnings-call-transcript
Apple (AAPL) Q2 2018 Results - Earnings Call Trans  /article/4168271-apple-aapl-q2-2018-results-earnings-call-transcript
Apple's (AAPL) CEO Tim Cook On Q1 2018 Results - E  /article/4142447-apples-aapl-ceo-tim-cook-on-q1-2018-results-earnings-call-transcript
Apple (AAPL) Q4 2017 Results - Earnings Call Trans  /article/4119877-apple-aapl-q4-2017-results-earnings-call-transcript
Apple (AAPL) Q3 2017 Results - Earnings Call Trans  /article/4093437-apple-aapl-q3-2017-results-earnings-call-transcript
Apple (AAPL) Q2 2017 Results - Earnings Call Trans  /article/4068153-apple-aapl-q2-2017-results-earnings-call-transcript
Apple (AAPL) Q1 2017 Results - Earnings Call Trans  /article/4041266-apple-aapl-q1-2017-results-earnings-call-transcript
Apple (AAPL) Q4 2016 Results - Earnings Call Trans  /article/4014922-apple-aapl-q4-2016-results-earnings-call-transcript

【讨论】:

  • 谢谢,这非常有帮助。唯一的问题是我一直在努力,因为这些文章元素中的每一个都有一个href 指向我需要的另一个网页。我能从这个解决方案中得到它吗?非常感谢您的帮助
  • 另一个我感兴趣的问题是你是如何找到api_url的?我似乎在源页面上找不到它
  • @geds133 如果我理解正确,您可以分别访问每个链接并从那里获取信息(在我的示例中,链接位于d["links"]["self"])。我在 Firefox Developer Tools->Network Tab 中找到了 API URL
  • 非常感谢,这正是我所需要的。感谢帮助
  • @geds133 我得到了检查如何在“网络”选项卡中发出请求的参数。 {:&lt;50} 部分只是字符串格式,表示打印字符串 50 个字符宽,左对齐。
猜你喜欢
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 2021-01-01
  • 2020-08-02
  • 2020-10-05
  • 2017-03-08
相关资源
最近更新 更多