【发布时间】:2019-11-28 14:00:35
【问题描述】:
我是 BeautifulSoup 的新手,我有一些我不明白的问题,我认为这个问题可能尚未得到解答,但在这种情况下,我找到的答案都没有帮助我。
我需要访问 div 的内部来检索网站的词汇表条目,但是使用 BeautifulSoup 时,该 div 的内部似乎根本“不显示”。你能帮帮我吗?
所以这是网站上的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;"> </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>
我需要访问<div id="glossary-list" class="list"> 中不同的<dl> 标签。
我的代码现在如下:
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 的内部以某种方式被阻塞了,但我不太确定。
有人知道如何访问它吗?
【问题讨论】:
-
某些元素是由脚本动态生成的,不会出现在您的
bs4上。您需要使用不同的包,如requests-html或selenium可以在解析这些元素之前渲染它们。
标签: python beautifulsoup