美丽的汤复制链接文本

问题描述 投票:0回答:1

我有一个函数,旨在提取 html 以在另一个函数中将其呈现为 pdf

    def setLinks(self, value):
    if isinstance(value, str) and ('<' in value and '>' in value):
        soup = BeautifulSoup(value, 'html.parser')
        paragraphs = []
        links = []

        # Process text and collect links
        for element in soup.descendants:
            if isinstance(element, str) and element.strip():
                paragraphs.append(element.strip())
            elif element.name == 'a' and element.get('href'):
                link_text = element.get_text().strip()
                href = element.get('href')
                links.append((link_text, href))
                if link_text not in paragraphs:
                    paragraphs.append(link_text)
    else:
        if isinstance(value, str):
            paragraphs = value.split('\n')
        else:
            paragraphs = [str(value)]
        links = []
    return links, paragraphs

我的输入是:

Il faut noter une une similitude de mise en scène avec la<a href="http://www.cappiello.fr/illustrations/"> couverture du "Cri de Paris", n° 201</a>, parue le 2 décembre 1900. Noter l'attitude des deux femmes, l'envolée du noeud de la robe de droite. Le visage de la femme en noir du Cri de Paris est repris pour la femme de gauche. On retrouve la présence d'un meuble sur la gauche pour l'équilibre de la composition.

当我调试时,我得到:

paragraphs = {list: 4} ['Il faut noter une une similitude de mise en scène avec la', 'couverture du "Cri de Paris", n° 201', 'couverture du "Cri de Paris", n° 201', ", parue le 2 décembre 1900. Noter l'attitude des deux femmes, l'envolée du noeud de la robe de droite. Le visage 
 0 = {str} 'Il faut noter une une similitude de mise en scène avec la'
 1 = {str} 'couverture du "Cri de Paris", n° 201'
 2 = {str} 'couverture du "Cri de Paris", n° 201'
 3 = {str} ", parue le 2 décembre 1900. Noter l'attitude des deux femmes, l'envolée du noeud de la robe de droite. Le visage de la femme en noir du Cri de Paris est repris pour la femme de gauche. On retrouve la présence d'un meuble sur la gauche pour l'équilibre de  

为什么

soup.descendants
首先在链接上循环:

<a href="http://www.cappiello.fr/illustrations/"> couverture du "Cri de Paris", n° 201</a>

然后在文字上

couverture du "Cri de Paris", n° 201
???

python beautifulsoup
1个回答
0
投票
if isinstance(element, str) and element.strip():
    paragraphs.append(element.strip())
elif element.name == 'a' and element.get('href'):
    link_text = element.get_text().strip()
    href = element.get('href')
    links.append((link_text, href))
    if link_text not in paragraphs:
        paragraphs.append(link_text)

看起来您附加了

paragraphs
两次。

© www.soinside.com 2019 - 2024. All rights reserved.