gpt4 book ai didi

python - Xpath提取多个节点之间的所有文本?

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:23 26 4
gpt4 key购买 nike

我正在使用 Python requests 模块抓取一个电子商务网站。嗯,我在提取多个节点之间的文本时遇到一些问题。以下 html 是我尝试提取文本的部分。我需要提取嵌入到两个 (p) 标签和所有 (strong) 标签中的 (div class="rte Members") 下的所有文本。注意! (强)标签可能因页面而异。

<div class="rte ingredients">
<p>Farina sbiancata arricchita (farina sbiancata di
<strong>grano</strong>,
ferro ridotto, vitamine B3-B1-B2-B9), zucchero,
agenti lievitanti E500ii-E541i-E341i, destrosio,
<strong>latte</strong>
scremato disidratato, olio di
<strong>soia</strong> parzialmente
idrogenato, sale,
<strong>glutine</strong> di <strong>grano</strong>,
colorante E170, estratto secco di sciroppo di granoturco, caseinati di
sodio (<strong>latte</strong>), emulsionante E471, regolatore di acidità
E270. Può contenere tracce di <strong>uova</strong>. Contiene OGM.</p>

<p>Valori nutrizionali (per 100g): energia 348Kcal, lipidi 3.3g (di cui
grassi saturi 0g), carboidrati 69.6g (di cui zuccheri 13g), proteine
10.9g, sale 2.6g.</p>
</div>

嗯,我正在使用以下代码,但我得到的结果是部分的。

ingredients = parser.xpath('//*[@id="bottom_right_product_infos"]/section[2]/div/p[1]/text()') 
print ingredients
['Farina sbiancata arricchita (farina sbiancata di']

相反,我需要提取 (DIV) 标记下的所有文本。

有人可以帮我解决这个问题吗?谢谢!

最佳答案

您似乎正在使用 lxml 库。如果是这样,下面的方法应该可以获取完整的内容。在打印语句中使用 .text_content() 而不是 .text

content='''
<div class="rte ingredients">
<p>Farina sbiancata arricchita (farina sbiancata di
<strong>grano</strong>,
ferro ridotto, vitamine B3-B1-B2-B9), zucchero,
agenti lievitanti E500ii-E541i-E341i, destrosio,
<strong>latte</strong>
scremato disidratato, olio di
<strong>soia</strong> parzialmente
idrogenato, sale,
<strong>glutine</strong> di <strong>grano</strong>,
colorante E170, estratto secco di sciroppo di granoturco, caseinati di
sodio (<strong>latte</strong>), emulsionante E471, regolatore di acidità
E270. Può contenere tracce di <strong>uova</strong>. Contiene OGM.</p>

<p>Valori nutrizionali (per 100g): energia 348Kcal, lipidi 3.3g (di cui
grassi saturi 0g), carboidrati 69.6g (di cui zuccheri 13g), proteine
10.9g, sale 2.6g.</p>
</div>
'''
from lxml.html import fromstring
root = fromstring(content)
for items in root.xpath("//div[contains(@class,'ingredients')]/p"):
print(items.text_content()) #take a closer look at this .text_content() instead of .text.

关于python - Xpath提取多个节点之间的所有文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47673088/

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