Python - 使用 DOM 获取 HTML

标签 python html

我有一个西类牙语闪存卡制作程序,可以从这里提取信息:http://www.spanishdict.com/examples/zorro (这只是一个例子)。我已经设置了它,所以它可以很好地翻译,但现在我想添加示例。然而,我注意到该页面上的示例是动态生成的,因此我安装了 Beautiful Soup 和 HTML5 解析器。我特别感兴趣的标签是:

<span class="megaexamples-pair-part">Los perros siguieron el rastro del <span 
class="megaexamples-highlight">zorro</span>. </span>

我用来尝试检索它的代码是:

soup = BeautifulSoup(urlopen("http://www.spanishdict.com/examples/zorro").read(), 'html5lib')
example = soup.findAll("span", {"class": "megaexamples-pair-part"})

但是,无论我以何种方式摆动它,我似乎都无法让它下拉动态生成的代码。我已经确认我通过搜索 megaexamples-container 获得了该页面,效果很好(您可以通过右键单击 google chrome 并点击“查看页面源代码”来查看)。

有什么想法吗?

最佳答案

您所做的只是拉取 HTML 页面,它可能会通过 JavaScript 调用从服务器加载更多数据。

您有 2 个选择:

  • 使用诸如 selenium 之类的网络驱动程序来控制正确加载整个页面的网络浏览器(然后您可以使用 BeautifulSoup 解析它或使用 selenium 查找元素自己的工具)。由于浏览器的使用,这会产生一些开销。

  • 使用浏览器开发者工具的网络选项卡(通常使用 F12 访问)来分析动态加载传入和传出的请求,并使用 requests 模块来复制它们。这更有效,但也可能更棘手。

不过,请记住,仅当您获得网站所有者的许可时才可以执行此操作。在许多情况下,这违反了服务条款。

关于Python - 使用 DOM 获取 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44592498/

相关文章:

python - Numpy:制作四元数乘法的批处理版本

python - 从双引号包含的csv文件格式配置单元数据加载

html - 将货币数字与左 Bootstrap 对齐

javascript - 使用 sinch 进行网络间通话时,浏览器每次在所有页面上都会请求 "share the device"权限?

javascript - 使用 Javascript 反转关键帧动画

python - 如何将 Ajax 与 Django 应用程序集成?

python - 如何循环遍历文件夹中的文件以获取 Python 中列的最大值?

python - 在 Python 中并行对共享数据执行大量计算

javascript - 通过了解内部 div 的大小来设置 html 页面最大宽度

java - 在加载 index.jsp 之前调用 Controller