TypeError:应为字符串或带有BeautifulGroup的缓冲区

2024-10-01 11:19:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从一些HTML中删除一些标记:

<p class="mt-20" itemprop="description">和{}。其他所有内容,例如<br>都应该保留。在

代码:

from bs4 import BeautifulSoup
import requests
import re
url = 'https://www.tokopedia.com/tokoonline22/sendok-ukur-elektrik-500g-maks-white?'
page3 = requests.get(url)
soup3 = BeautifulSoup(page3.text, "lxml")

#No problem.
#v = """<p class="mt-20" itemprop="description">*OMCB07BK*<br/><br/>Tas backpack ini didesign khusus untuk menaruh drone DJI Phantom 3 beserta dengan aksesoris-aksesorisnya seperti propeller, baterai dan remot kontrol. Setiap slot tas didesign untuk menaruh semua part dari drone DJI sehingga drone mudah dirakit saat ingin digunakan.<br/><br/>Features<br/><br/>Shoulder Bag<br/>Tas ini mirip seperti tas ransel hanya berbeda pada komparmen penyimpanan dimana setiap komparmen didesign untuk menaruh part-part dari DJI Phantom 3.<br/><br/>Easy to Access<br/>Anda dapat merekit dan menggunakan drone dengan sangat cepat dan mudah berkat designnya yang terbuka.<br/><br/>Designed for DJI Phantom 3<br/>Didesign khusus untuk menaruh drone DJI Phantom 3 selain drone juga dapat menaruh aksesoris-aksesoris nya.<br/><br/>Specifications<br/>Dimension    37 x 26 x 7 cm</p></p>
#"""

v = soup3.find("p", {"itemprop": "description"})
result = re.sub('<p class="mt-20" itemprop="description">', "", v)
print(result)

输出错误:

^{pr2}$

Tags: brimportdescriptionclassphantomuntukdanmt
2条回答

另一方面,实际上并不需要正则表达式。您可以使用BeautifulSoup本身来unwrap(我认为这是您要实现的)元素:

for elm in soup3.find_all("p", {"itemprop": "description"}):
    elm.unwrap()

re.sub需要string变量,您的v变量是bs4 element tag。 可以将bs4元素更改为字符串:

newv = str(v)
result = re.sub('<p class="mt-20" itemprop="description">', "", newv)

相关问题 更多 >