BeautifulSoup:如何显示不显示的div的内部?

2023-12-23

我是 BeautifulSoup 的新手,我有一些我不明白的问题,我认为这个问题可能已经得到解答,但我找到的答案在这种情况下都没有帮助我。

我需要访问 div 的内部来检索网站的词汇表条目,但是该 div 的内部似乎根本“不显示”在 BeautifulSoup 中。你可以帮帮我吗 ?

这是网站上的 html:

<!DOCTYPE html>
<html lang="en-US" style="margin-top: 0px !important;">
<head>...</head>
<body>
<header>...</header>
<section id="glossary" class="search-off">
    <dl class="title">
        <dt>Glossary</dt>
    </dl>
    <div class="content">
        <aside id="glossary-aside">
            <div></div>
            <ul></ul>
        </aside>
        <div id="glossary-list" class="list">
          <dl data-id="2103">...</dl>
          <dl data-id="1105">
            <dt>ABV (Alcohol by volume)</dt>
            <dd>
              <p style="margin-bottom: 0cm; text-align: justify;"><span style="font-family: Arial Cyr,sans-serif;"><span style="font-size: x-small;"><span style="font-size: small;"><span style="font-size: medium;">Alcohol by volume (ABV) is the measure of an alcoholic beverage’s alcohol content. Wines may have alcohol content from 4% ABV to 18% ABV; however, wines’ typical alcohol content ranges from 12.5% to 14.5% ABV. You can find a particular wine’s alcohol content by checking the label.</span></span></span></span><span style="font-size: medium;">&nbsp;</span></p>
            </dd>
          </dl>
          <dl data-id="1106">...</dl>
          <dl data-id="1213">...</dl>
          <dl data-id="2490">...</dl>
          <dl data-id="11705">...</dl>
          <dl data-id="1782">...</dl>
        </div>
        <div id="glossary-single" class="list">...</div>
    </div>
    <div class="s_content">
        <div id="glossary-s_list" class="list"></div>
    </div>
</section>
<footer></footer>
</body>
</html>

我需要访问不同的<dl>中的标签<div id="glossary-list" class="list">.

我的代码现在如下:

url_winevibe = requests.get("http://winevibe.com/glossary")
soup = BeautifulSoup(html, "lxml")
ct = url_winevibe.find("div", {"id":"glossary-list"}).findAll("dl")

我尝试了各种方法,包括获取后代和孩子,但我得到的只是一个空列表。

如果我尝试ct = soup.find("div", {"id":"glossary-list"})并打印它,我得到:<div class="list" id="glossary-list"></div>。在我看来,div 的内部被某种方式阻塞了,但我不太确定。

有人知道如何访问它吗?


第一个解决方案url基于我对数据加载位置的研究!我确实看到它的负载是通过XHR来自不同的url哪里的JavaScript呈现:

import requests
import json

r = requests.get('http://winevibe.com/wp-json/glossary/key/?l=en').json()
hoks = json.loads(r)
for item in hoks:
  print(item['key'])

第二种解决方案:

from selenium import webdriver
from bs4 import BeautifulSoup
import time

browser = webdriver.Firefox()
url = 'http://winevibe.com/glossary/'
browser.get(url)
time.sleep(20)  # wait 20 seconds for the site to load.
html = browser.page_source
soup = BeautifulSoup(html, features='html.parser')
for item in soup.findAll('div', attrs={'id': 'glossary-list'}):
    for dt in item.findAll('dt'):
        print(dt.text)

您可以使用browser.close()关闭浏览器

Output:

这是最终的代码,它将通过聊天处理所有用户请求:

import requests
import json

r = requests.get('http://winevibe.com/wp-json/glossary/key/?l=en').json()
data = json.loads(r)
result = ([(item['key'], item['id']) for item in data])
text = []
for item in result:
    try:
        r = requests.get(
            f"http://winevibe.com/wp-json/glossary/text/?id={item[1]}").json()
        data = json.loads(r)
        print(f"Getting Text For: {item[0]}")
        text.append(data[0]['text'])
    except KeyboardInterrupt:
        print('Good Bye')
        break

with open('result.txt', 'w+') as f:
    for a, b in zip(result, text):
        lines = ', '.join([a[0], b.replace('\n', '')]) + '\n'
        f.write(lines)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BeautifulSoup:如何显示不显示的div的内部? 的相关文章

随机推荐

  • 耦合常微分方程的龙格库塔

    我正在 Octave 中构建一个函数来解决N耦合常微分方程类型 dx dt F x y z t dy dt G x y z t dz dt H x y z t 使用这三种方法中的任何一种 Euler Heun 和 Runge Kutta 4
  • 如何在电子表格的 Google Apps 脚本中使用数组作为自定义函数的参数

    我正在尝试使用脚本编辑器在我的谷歌电子表格中创建自定义函数 我似乎无法允许用户为函数提供一个数组作为参数 当我像这样进行硬编码时 我的脚本可以工作 var values SpreadsheetApp getActiveSheet getRa
  • Plotly:如何自定义图例?

    我已经自定义了使用plotly绘制的数据点的颜色 数据点的颜色是根据与其关联的标签指定的 不过设置之后legend True所有三种颜色 在字典中定义 都不会显示在图中 我想 a rgb 147 112 219 the actual col
  • iOS PhoneGap 构建失败

    我是新来的PhoneGap适用于 iOS 和 Xcode 我的应用程序在 Android 手机上运行良好 但遇到了问题 我能够在 iOS 模拟器中构建并运行该应用程序 但是当我将其存档以在设备上进行测试时 出现以下错误 我到处搜索但找不到有
  • JQuery Mobile,整个网站的一个页脚片段

    I m not询问如何获得固定页脚 我有一个多页和单页的结构 我想知道如何在整个网站中仅使用一个 html 片段 我真的在寻找一种解决方案 因为我想仅在一个位置编辑页脚并在所有页面中查看修改 Thanks 编辑 我正在开发一个用 Phone
  • 为什么 VisualVM 探查器中没有显示所有方法?

    我在用VisualVM看看我的应用程序在哪里慢 但它并没有显示所有方法 可能没有显示所有延迟应用程序的方法 我有一个实时应用程序 声音处理 并且有几百微秒的时间不足 有没有可能VisualVM隐藏本身速度很快的方法 UPDATE 1 我通过
  • 使用 PK 反馈循环复制行

    鉴于以下情况 表1 Id Field1 Field2 NULL 1 2 NULL 3 4 我想将 Field1 和 Field2 的值插入到另一个表 Table2 中 Table2 有一个自增整数主键 我想从表 2 中检索新的 PK 并更新
  • 由于访问控制列表,SSRS 401.3 错误访问被拒绝

    卸载 Oracle 10 客户端 安全补丁后 不知道是什么触发了它 我在用户访问我们的 SSRS 测试服务器时遇到了问题 首先发生的事情是 SQL 服务和 SSRS 服务拒绝在 NT AUTHORITY SYSTEM 下启动 当我将其更改为
  • 无法使用 dotnet CLI 和 nuspec 文件打包 NuGet 包

    我有几个项目正在从 NET Framework 4 7 迁移到 NET Standard 2 0 结果 我正在尝试使用dotnet pack命令来创建我的 NuGet 包 同时使用我的nuspec带有令牌的文件 我有几个自定义构建脚本可以为
  • 匹配引用的 csv 中的未转义引号

    我查看了几篇具有类似标题的 Stack Overflow 帖子 但没有一个已接受的答案对我有用 我有一个 CSV 文件 其中数据的每个 单元格 均由逗号分隔并被引用 包括数字 每行以换行符结束 一些文本 单元格 中有引号 我想使用正则表达式
  • ngrx 订阅存储不会在状态更改时更新 Angular 5

    我正在构建一个应用程序 它将城市名称发送到 api 端点并返回该城市的天气 它使用两个操作 一个将更新城市 使用名称作为有效负载 第二个操作加载返回的新数组以更新状态 该效果使用 switchMap 映射 api 调用然后返回结果 用于显示
  • jsf隐式对象cc和组件之间的区别

    也许这是一个愚蠢的问题 但我用 cc 引用复合组件 例如 cc attrs randomAttr 但我也看到了 component 隐式对象 我使用它是因为我被告知要这样做 但我不太明白它的用途 谁能解释一下吗 cc指评估时正在处理的顶级复
  • 在没有内置函数的情况下按降序排列文件中的元素

    我按照冒泡排序重新编写了程序 def main try array file open input Please enter the name of the file you wish to open A file read split f
  • SASS 和 SCSS 变量名称的合法字符

    SCSS 变量名称中可以使用哪些字符 如果你查看源代码SASS 词法分析器 https github com nex3 sass blob stable lib sass script lexer rb 你会看到的 A hash of re
  • 有没有办法检测 NaN 和 -NaN?

    我想将 lua 数字保存到字符串和句柄中NaN大小写正确 检测任何 NaN 都很容易 x x 然而 我发现只有一种检测方法是NaN or NaN是使用tostring x nan 有更好的方法吗 代替tostring x nan 不方便携带
  • Swift Calendar.当前内存泄漏?

    我在应用程序中遇到了内存问题 我已经能够将其分解为 NSCalendar 一个简单的视图控制器如下所示 class ViewController UIViewController override func viewDidLoad supe
  • 使用输入元素上的修饰键触发单击事件

    我正在为某些功能编写测试 其中涉及用户按住 Shift 键并单击复选框 我在用着 input trigger Event click shiftKey true 来模拟那个 但是当事件监听器被调用时 event shiftKey财产总是被报
  • 如何使用 javascript (jquery) 将整数值添加到返回字符串的值?

    我有一个简单的 html 块 例如 span 8 span 我尝试使用 jquery 将 1 添加到值 8 var currentValue replies text var newValue currentValue 1 replies
  • Win32 命名管道和消息大小限制 - 旧的 64K 限制是否仍然适用?

    Win32 过去对消息模式管道的消息大小限制为 64K 正如 KB 文章的残余所证明的那样Q119218 PRB 命名管道 Write 限制为 64K https support microsoft com en us kb 119218
  • BeautifulSoup:如何显示不显示的div的内部?

    我是 BeautifulSoup 的新手 我有一些我不明白的问题 我认为这个问题可能已经得到解答 但我找到的答案在这种情况下都没有帮助我 我需要访问 div 的内部来检索网站的词汇表条目 但是该 div 的内部似乎根本 不显示 在 Beau