python - 如何抓取 - 跨 aria-hidden ="true"- 文本

标签 python html web-scraping beautifulsoup hidden-field

 <div class="comments-post-meta__profile-info-wrapper display-flex">
    <a class="app-aware-link  inline-flex overflow-hidden t-16 t-black t-bold tap-target" target="_self" href="https://www.linkedin.com/in/ACoAAAAg-vkBuoZD8xeJW57GlPMiPRWUe-jvvSM" data-test-app-aware-link="">
      <h3 class="comments-post-meta__actor display-flex flex-column overflow-hidden t-12 t-normal t-black--light">
        <span class="comments-post-meta__name text-body-small-open t-black">
          <span class="comments-post-meta__name-text hoverable-link-text mr1">
            <span dir="ltr"><span aria-hidden="true"><!---->Nathan Greenhut<!----></span>
            <span class="visually-hidden"><!---->View Nathan Greenhut’s profile<!----></span>
          </span>
        </span>
</div>

我正在尝试抓取对特定 LinkedIn 帖子发表评论的人员的姓名。

我尝试了这段代码:

for i in soup.find_all("span",attrs = {"class" : "comments-post-meta__name-text hoverable-link-text mr1"}):
    print(i.find('span').get_text())

我得到的输出是:

Nathan GreenhutView Nathan Greenhut’s profile

但我想要的输出是:

Nathan Greenhut

最佳答案

您可以直接通过元素的属性来选择元素:

soup.find('span', {'aria-hidden': 'true'}).get_text(strip=True)

或通过css selector

soup.select_one('[aria-hidden="true"]').get_text(strip=True)

或者如果有其他元素具有更具体的此类属性:

soup.select_one('.comments-post-meta__profile-info-wrapper [aria-hidden="true"]').get_text(strip=True)


from bs4 import BeautifulSoup

html = '''
<div class="comments-post-meta__profile-info-wrapper display-flex">
    <a class="app-aware-link  inline-flex overflow-hidden t-16 t-black t-bold tap-target" target="_self" href="https://www.linkedin.com/in/ACoAAAAg-vkBuoZD8xeJW57GlPMiPRWUe-jvvSM" data-test-app-aware-link="">
      <h3 class="comments-post-meta__actor display-flex flex-column overflow-hidden t-12 t-normal t-black--light">
        <span class="comments-post-meta__name text-body-small-open t-black">
          <span class="comments-post-meta__name-text hoverable-link-text mr1">
            <span dir="ltr"><span aria-hidden="true"><!---->Nathan Greenhut<!----></span>
            <span class="visually-hidden"><!---->View Nathan Greenhut’s profile<!----></span>
          </span>
        </span>
</div>
'''
soup = BeautifulSoup(html)

soup.select_one('[aria-hidden="true"]').get_text(strip=True)

关于python - 如何抓取 - 跨 aria-hidden ="true"- 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75827117/

相关文章:

python - 我无法理解 python3 中的导入

python - 使用常规 python 脚本运行 Nose 测试

html - IOS App 与 Web 服务通信

php - 从字符串中获取最后一个 <li> 元素

python - 通过 POST 抓取 Bandcamp 粉丝收藏

javascript - 从 JavaScript 表单访问搜索结果的 VBA 网络抓取工具

python - SQLAlchemy 中的错误处理

Python:显示对象的实现源

jquery - 获取按高度(以 % 为单位)调整大小的 div 的宽度(以像素为单位)

Python: BeautifulSoup 解析 </li> 和 <ul> 并更改 class_= 名称