gpt4 book ai didi

Python - BeautifulSoup4 decompose() 不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 18:16:09 24 4
gpt4 key购买 nike

我正在尝试从此页面获取所有标题的类别。

from bs4 import BeautifulSoup
import urllib2

headers = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) \
AppleWebKit/537.36 (KHTML, like Gecko) \
Ubuntu Chromium/33.0.1750.152 Chrome/33.0.1750.152 Safari/537.36'
}
category_url = ''
html = urllib2.urlopen(urllib2.Request(category_url, None, headers)).read()
page = BeautifulSoup(html)
results = page.find('div', {'class': "results"}).find_all('li')

for res in results:
category = res.find(attrs={'class': "category"}) or res.find(attrs={'class': "categories"})
#print category #till here, I'm getting correct data
print category.b.decompose() #here is the problem? I should get the div element without <b> tag but it returns None

我得到的是 None 而不是更新的 dom。

PS:如果您有任何改进此代码的建议,请告诉我。我很乐意进行更改以获得更好的性能和 pythonic 代码。

最佳答案

Decompose 从树中删除标签,并返回 None,而不是剩余的树。这与 list.appendlist.sort 的工作方式类似。 (这些方法还会修改调用者并返回 None。)

for res in results:
category = res.find(attrs={'class': "category"}) or res.find(attrs={'class': "categories"})
category.b.decompose()
print(category)

产生类似的输出

<div class="categories">

<span class="highlighted">Advertising</span> <span class="highlighted">Agencies</span> </div>
<小时/>

使用lxml:

import lxml.html as LH
import urllib2

category_url = 'http://www.localsearch.ae/en/category/Advertising-Agencies/1013'
doc = LH.parse(urllib2.urlopen(category_url))
for category in doc.xpath(
'//div[@class="category"]|//div[@class="categories"]'):
b = category.find('b')
category.remove(b)
print(LH.tostring(category))

关于Python - BeautifulSoup4 decompose() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24971962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com