html - 如何使用beautifulsoup从div包围的span中提取文本
问题描述
我有一个html片段如下:
<div class="single_baby_name_description">
<label>Meaning :</label> <span class="28816-meaning">the meaning of this name is universal whole.</span> </br>
<label>Gender :</label> <span class="28816-gender">Girl</span> </br>
<label>Religion :</label> <span class="28816-religion">Christianity</span> </br>
<label>Origin :</label> <span class="28816-origin">German,French,Swedish</span> </br>
</div>
我尝试使用 div 从所有跨度中提取文本
soup = BeautifulSoup(html,'html.parser')
spans=soup.select('div.single_baby_name_description>span')
但是 spans[0].text 仅从第一个 tag 中获取文本。并且 spans[1].text 发生 IndexError: list index out of range。
任何帮助将不胜感激。
解决方案
我发现只有“lxml”才能完成这项工作。由于某种原因,'html.parser' 不会。
这将起作用:
soup = BeautifulSoup(html, 'lxml')
spans = soup.select('div.single_baby_name_description span')
spans = [span.text for span in spans]
print(spans)
输出:
['the meaning of this name is universal whole.', 'Girl', 'Christianity', 'German,French,Swedish']
推荐阅读
- python - 打印 scipy 稀疏矩阵而不跳行
- api - 是否有标准的 API 流程图代码应该坚持?
- python - 书签功能 django/python
- sql - 在 SQL (date_trunc) 中,周数最多为数月
- javascript - Reactjs,当可滚动的div扩展时如何使滚动保持在当前位置
- pandas - Pandas,groupby 包括每行分组的行数
- python - 需要帮助在 Python 中编写 Map reduce 以计算每个国家/地区每年每个 item_type 的 avg (unit_price)
- java - 如何将elasticsearch SQL API请求的结果映射到java POJO?
- javascript - chrome tabCapture 内容脚本中的 undefiend
- python - 从最小化中排除一些参数