Seb*_*ian 3 beautifulsoup python-3.x
我想找到div与使用beautifulsoup解析的网页中的元素相关联的文本.
print(searchResult)
<div id="results-from-CIDR"><a href="javascript:prefixContribsToggleAll();" id="prefixcontribs-tog">toggle all</a><span id="prefixcontribs-prog">Searching.</span> No changes were found for this wildcard/CIDR range.</div>
print(type(searchResult))
<class 'bs4.element.Tag'>
print(searchResult.find_all("div"))
[]
print(searchResult.find_all("div", attrs={"id":"results-from-CIDR"}))
[]
Run Code Online (Sandbox Code Playgroud)
那里显然有一个div.为什么不找到它?
如果您只是在查找div的普通/可见文本而没有任何标记,则可以通过该searchResult.text属性访问此文本.
该Tag.find_all()方法只搜索后人的Tag,其name给定的参数相匹配.所以在你的情况下,它返回一个空列表,因为没有后代<divs>.Tag您共享的示例的唯一后代是<a>标记,a <span>和几个实例NavigableString(bs4用于表示DOM树中可见文本的对象).如果你想在你的例子中使用它find_all()来返回它<div>,你必须从父节点Tag(或者更确切地说,从目标<div>是其后代的任何元素)中调用它.
例如,如果你这样做:
from bs4 import BeautifulSoup as Soup
soup = Soup('<html><body><div id="results-from-CIDR"><a href="javascript:prefixContribsToggleAll();" id="prefixcontribs-tog">toggle all</a><span id="prefixcontribs-prog">Searching.</span> No changes were found for this wildcard/CIDR range.</div></body></html>')
soup.findall('div')
Run Code Online (Sandbox Code Playgroud)
...然后元素将被返回,因为它是soup(html docroot)的后代.
但同样,如果您只是尝试提取文本,请使用.text属性,该属性为给定标记及其任何后代提供可见文本.
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |