我一直试图使用BeautifulSoup删除元素的第一个实例,我确信我遗漏了一些东西。我没有使用find,因为我需要针对第一个实例,它始终是一个头(Div),并且具有类HubHeader。该类与div标记结合使用于其他地方。不幸的是,我无法更改基本html的设置。
我也尝试了选择一个外循环,但它仍然没有工作。
def delete_header(filename):
html_docs = open(filename,'r')
soup = BeautifulSoup( html_docs, "html.parser")
print (soup.select_one(".HubHeader")) #testing
for div in soup.select_one(".HubHeader"):
div.decompose()
print (soup.select_one(".HubHeader")) #testing
html_docs.close()
delete_header("my_file")
最近的错误是:
AttributeError: 'NavigableString' object has no attribute 'decompose'
我正在使用select_one()
和decompose()
。
发布于 2018-09-08 19:48:52
简短的回答,替换,
for div in soup.select_one(".HubHeader"):
div.decompose()
只有一行:
soup.select_one(".HubHeader").decompose()
更长的答案,您可以在bs4.element.Tag对象上迭代代码。函数.select_one()返回一个对象,而.select()返回一个列表,如果您使用的是.select(),那么您的代码将正常工作,但是去掉所选类中元素的所有出现情况。
https://stackoverflow.com/questions/52229489
复制相似问题