繁体   English   中英

如何使用div标签作为使用BeautifulSoup搜索html文档的起点

[英]How to use a div tag as a starting point for searching an html document with BeautifulSoup

我有一个HTML文档,我想解析出具有特定ID的表,该表始终位于具有特定ID的div标记内。 这是我尝试过的:

soup = BeautifulSoup(html)
target_div = soup('div', {'id' : 'left'})
target_table = target_div.findNextSibling('table')

显然,这是行不通的。 似乎我的第二条语句返回了ResultSet,而不是在文档中四处移动(我认为这很有意义,但是我不确定如何获得我需要的东西!)。 进行这种解析的正确方法是什么?

findNextSibling查找与原始target_div元素包含在同一父级中的表。 您要查找div中包含的表。 .find()使用.find()

target_div = soup.find('div', {'id' : 'left'})
target_table = target_div.find('table')

对于简单情况(例如包含的表),可以将标记名用作属性:

target_div = soup.find('div', {'id' : 'left'})
target_table = target_div.table

您正在调用标记,就像使用.find_all()方法一样 .find_all()返回所有匹配的标签 ,一个列表。 您必须遍历结果集,但是由于要查找单个 div(使用其ID),因此最好使用.find() ,它仅返回一个结果。

如果确实需要处理多个匹配项,只需将.find_all()的结果视为列表即可; 循环:

for element in soup.find_all('div')
    contained_table = element.find('table')

或使用索引:

second_match = soup.find_all('div')[1]

您还可以使用CSS选择器

target_table = soup.select('div#yourid > table#yourtableid')[0]

BeautifulSoup<a>在标签中不显示标签</a><div></div><div id="text_translate"><p>在我做的一些测试中,我注意到<strong>div</strong>标签内的标签<strong>a</strong> , <strong>beautifulsoup</strong>自动将其“翻译”为文本:</p><pre> &lt;div class='a'&gt; &lt;a href='....'&gt;TEXT&lt;/a&gt; &lt;i..... &lt;/div&gt;</pre><p> 当我使用命令find_all('div', {'class': 'a'})搜索<strong>div</strong>标签并尝试打印结果div.a时,bs4 显示值<strong>None</strong> ...但如果我尝试使用print div.text bs4 仅显示<strong>TEXT</strong>而不是标签<strong>a</strong> )。</p><p> 这是部分代码:</p><pre> soup = BeautifulSoup(html, 'lxml') data=soup.find_all('div', {'class': 'a'}) for div in data: print div.a $ None</pre><p> 为什么?</p><p> <strong>更新</strong>:刚才我注意到......这是另一个问题。 在源代码中有标签<strong>a</strong> ...但是现在,(看到带有美化的 output)我意识到标签 bs4 让我将其视为<strong>div</strong> ,而实际上它是标签<strong>a</strong> ! 奇怪的!!!</p><p> 漏洞???</p><p> <strong>解决</strong>了我做了一些清理并删除了请求和urllib3的所有包......然后我用<strong>apt</strong>重新安装了所有东西,现在可以工作了。 requests 和 urllib3 的包版本分别为: <strong>2.12.4-1</strong>和<strong>1.19.1-1</strong></p></div>

[英]BeautifulSoup not show tag <a> in tag <div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用 BeautifulSoup 从 HTML div 标签文件中提取文本? 如何使用BeautifulSoup查找具有相同td标签的多个div python BeautifulSoup搜索标签 如何阅读 BeautifulSoup Div 标签 object 作为字典 Beautifulsoup 在 xml 文档中添加/插入 html 标记行 带有div标签且没有属性的BeautifulSoup 如何使用 BeautifulSoup 替换 HTML 文档中的 URL 如何使用 BeautifulSoup 解析特定的 HTML 标签? BeautifulSoup<a>在标签中不显示标签</a><div></div><div id="text_translate"><p>在我做的一些测试中,我注意到<strong>div</strong>标签内的标签<strong>a</strong> , <strong>beautifulsoup</strong>自动将其“翻译”为文本:</p><pre> &lt;div class='a'&gt; &lt;a href='....'&gt;TEXT&lt;/a&gt; &lt;i..... &lt;/div&gt;</pre><p> 当我使用命令find_all('div', {'class': 'a'})搜索<strong>div</strong>标签并尝试打印结果div.a时,bs4 显示值<strong>None</strong> ...但如果我尝试使用print div.text bs4 仅显示<strong>TEXT</strong>而不是标签<strong>a</strong> )。</p><p> 这是部分代码:</p><pre> soup = BeautifulSoup(html, 'lxml') data=soup.find_all('div', {'class': 'a'}) for div in data: print div.a $ None</pre><p> 为什么?</p><p> <strong>更新</strong>:刚才我注意到......这是另一个问题。 在源代码中有标签<strong>a</strong> ...但是现在,(看到带有美化的 output)我意识到标签 bs4 让我将其视为<strong>div</strong> ,而实际上它是标签<strong>a</strong> ! 奇怪的!!!</p><p> 漏洞???</p><p> <strong>解决</strong>了我做了一些清理并删除了请求和urllib3的所有包......然后我用<strong>apt</strong>重新安装了所有东西,现在可以工作了。 requests 和 urllib3 的包版本分别为: <strong>2.12.4-1</strong>和<strong>1.19.1-1</strong></p></div> 如何使用BeautifulSoup解析HTML标记内的HTML标记内容?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM