gpt4 book ai didi

python - BeautifulSoup 内容的正确编码

转载 作者:太空宇宙 更新时间:2023-11-04 06:34:22 25 4
gpt4 key购买 nike

我有一段代码使用 BeatifulSoup 从网站上抓取内容。

short_description = soup.find('div', attrs={"class":"short-description"})
if short_description:
short_desc = short_description.find('div', attrs={"class": "std"})
if short_desc:
adm_product.append(short_desc.renderContents())

long_description = soup.find('div', attrs={"class": "box-collateral box-description"})
if long_description:
long_desc = long_description.find('div', attrs={"class": "std"})
if long_desc:
adm_product.append(long_desc.renderContents())
L = []
for tag in long_desc.recursiveChildGenerator():
if isinstance(tag,BeautifulSoup.Tag):
L.append(tag.renderContents())
desc = " ".join(v for v in L if v > 0)
print desc
adm_product.append(desc)
else:
adm_product.append('pas du description')

# we get the country and producer
for txt in product_shop.findAll(text=True):
if re.search('Origine',txt,re.I):
origin = txt.next.strip()
try:
country, producer = origin.split(', ')
except Exception, e:
pass
else:
adm_product.append(country)
adm_product.append(producer)

一个 HTML 示例输入:

<div class="short-description">
<div class="std">Barre chocolat au lait fourrée à la crème de lait<br>25g, bio et équitable<br>Produit bio contrôlé par Bio Inspecta</div>
</div>

<div class="box-collateral box-description">
<h2>Description du produit</h2>
<div class="std">
<div><strong>CHOKICHOC : la barre de chocolat au lait, fourrée à la crème de lait</strong></div><br>
<div style="text-align: justify;">Exquis mélange des plus fins cacaos et de l’aromatique sucre bio du Paraguay, CHOKICHOC est composée exclusivement de matières premières cultivées sans additif ni arôme artificiel. Tous les ingrédients proviennent de cultures biologiques. <strong>Légère, fondante, idéale pour le goûter, un vrai délice!</strong></div><br>
<div>La commercialisation des barres CHOKICHOC garantit un prix minimum pour le producteur, des contrats d’achats à long terme ainsi que le préfinancement partiel de la récolte.</div> </div>
</div>
<div class="product_shop">
<p>

<label class="garanties_adm">
<strong>Les garanties :</strong></label>
<img src="/images/adm/icon-garantie-fairtrade-ab.png">
</p>
<p>
<label><strong>Origine :</strong></label>
Burkina Faso, Cercle des Sécheurs </p>
<p> </p>

</div>

当我打印 adm_product 列表时,我得到:

['002267', 'Barre chocolat au lait fourr\xc3\xa9e \xc3\xa0 la
cr\xc3\xa8me de lait<br />25g, bio et \xc3\xa9quitable<br />Produit
bio contr\xc3\xb4l\xc3\xa9 par Bio Inspecta', '<strong>CHOKICHOC : la
barre de chocolat au lait, fourr&eacute;e &agrave; la cr&egrave;me de
lait</strong> CHOKICHOC : la barre de chocolat au lait, fourr&eacute;e
&agrave; la cr&egrave;me de lait Exquis m&eacute;lange des plus fins
cacaos et de l&rsquo;aromatique sucre bio du Paraguay, CHOKICHOC est
compos&eacute;e exclusivement de mati&egrave;res premi&egrave;res
cultiv&eacute;es sans additif ni ar&ocirc;me artificiel. Tous les
ingr&eacute;dients proviennent de cultures biologiques.
<strong>L&eacute;g&egrave;re, fondante, id&eacute;ale pour le
go&ucirc;ter, un vrai d&eacute;lice!</strong> L&eacute;g&egrave;re,
fondante, id&eacute;ale pour le go&ucirc;ter, un vrai d&eacute;lice!
La commercialisation des barres CHOKICHOC garantit un prix minimum
pour le producteur, des contrats d&rsquo;achats &agrave; long terme
ainsi que le pr&eacute;financement partiel de la r&eacute;colte.',
'0,90\xc2\xa0',
u'/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/0/0/002267_2.jpg',
u'Burkina Faso', u'Cercle des S\xe9cheurs']

我的列表 item[1] 编码正确,但 item[2] 编码不正确;最后两项也不是。

我错过了什么?

最佳答案

我能让它工作的唯一方法是像这样设置编码:

# we get the country and producer
for txt in product_shop.findAll(text=True):
get_origin = re.search('Origine',txt,re.I)
if re.search('Origine',txt,re.I):
origin = txt.next.strip()
try:
country, producer = origin.split(', ')
except Exception, e:
pass
else:
adm_product.append(country.encode("iso-8859-1"))
adm_product.append(producer.encode("iso-8859-1"))

然后这将返回“列表”,如:

.... 'Burkina Faso', 'Cercle des S\xe9cheurs']

item[1] 已正确添加到列表中,因为我使用 chrome 检查该元素,它正确地将 html 更改为:

<div style="text-align: justify;">Exquis mélange des plus fins cacaos et de l’aromatique sucre bio du Paraguay, CHOKICHOC est composée exclusivement de matières premières cultivées sans additif ni arôme artificiel. Tous les ingrédients proviennent de cultures biologiques. <strong>Légère, fondante, idéale pour le goûter, un vrai délice!</strong></div>

如果我查看源代码,它就像:

<div style="text-align: justify;">Exquis m&eacute;lange des plus fins cacaos et de l&rsquo;aromatique sucre bio du Paraguay, CHOKICHOC est compos&eacute;e exclusivement de mati&egrave;res premi&egrave;res cultiv&eacute;es sans additif ni ar&ocirc;me artificiel. Tous les ingr&eacute;dients proviennent de cultures biologiques. <strong>L&eacute;g&egrave;re, fondante, id&eacute;ale pour le go&ucirc;ter, un vrai d&eacute;lice!</strong></div><br />

关于python - BeautifulSoup 内容的正确编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13349206/

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