我有一个西类牙语闪存卡制作程序,可以从这里提取信息: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/