如何删除Python列表中的bs4.element.Tag元素?

时间:2019-03-23 20:02:03

标签: python python-3.x beautifulsoup

我有一个Python列表

url_list = [<img src="https://test.com/temp.jpg" style="display:block"/>, <img src="https://test.com/not_temp.jpg" style="display:block"/>]

该列表中的两个元素均为'bs4.element.Tag'类型。

如何在保留{bs4.element.Tag”类型的同时删除'<img src="https://test.com/temp.jpg" style="display:block"/>'元素?

,该列表将及时更改,因此del url_list[0]将无法正常工作。

我尝试了url_list.remove('<img src="https://test.com/temp.jpg" style="display:block"/>')

但是它不起作用,因为它的类型不同。

编辑: 我想删除此'<img src="https://test.com/temp.jpg" style="display:block"/>'确切元素。和“同时保持其'bs4.element.Tag'类型”意味着我不想更改列表元素的类型。

2 个答案:

答案 0 :(得分:1)

将标签的字符串表示形式转换为BS对象:

tag = '<img src="https://test.com/temp.jpg" style="display:block"/>'
unwanted = bs4.BeautifulSoup(tag).img

并删除它:

url_list.remove(unwanted)

答案 1 :(得分:0)

最简单的方法可能是简单地遍历每个标签并检查标签是否包含某个元素,您可以使用tag.get()方法来完成此操作。例如,您可以按照

 for tag in url_list:
     if tag.get('src') == 'some_url':
         url_list.remove(tag)

get()方法可用于提取标签的任何单个属性,而不仅仅是src。然后由您决定如何过滤掉要删除的标签。