Python 美丽汤 : Removing specific element in element

标签 python html web-scraping beautifulsoup

我有一组 html 文件。我需要从“ul/li”段中删除链接,但其他链接和“ul/li”段必须保留。

我为此使用了 BS。

<p>
  <a href="link" class="story body__link">link</a>
 </p>

<ul class="story-body__unordered-list">
  <li class="story-body__list-item">
    <a href="link" class="story-body__link">link</a>
  </li>
</ul>

<ul class="story-body__unordered-list">
  <li class="story-body__list-item">
    text
  </li>
</ul>

我正在使用 python BS 来完成此任务。我设法通过这段代码完成这项任务,但它并不完美。我的问题是有没有更好、更干净的解决方案?

soup = BeautifulSoup(page, 'html.parser')


for i in soup.find_all('li', attrs={"story-body__list-item"}):
    x = str(i.next_element)
    if x.startswith( '<a' ) == True:
        i.decompose()

最佳答案

像这样尝试一下,看看它是否适用于您的实际代码:

for link in soup.select("li.story-body__list-item > a"):   
     link.parent.decompose()

或者:

for link.parent in soup.select("li.story-body__list-item > a"):    
     link.decompose()

关于Python 美丽汤 : Removing specific element in element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59642645/

相关文章:

python - 了解 Python 3 中的 XML 和 XSD 解析

html - intel-xdk html5 平台 android 应用程序在模拟器中正常工作但在设备中无法正常工作

html - 从 HTML 文档中提取 IP 地址

python - Python 中的多处理 : web scraping doesn't speed up

python - 我可以用掩码分割 numpy 数组吗?

python - 寄生轴出现在两个位置并且重叠

html - 内联 block 与 pintrest 一样的板

php - 如何将选择的值从下拉列表传递到数据库表

python - 了解使用 Scrapy 时的无限加载 - 怎么了?

python - 导入错误 : cannot import name '_get_logger' Niftynet