首页 > 解决方案 > 如何使用 BeautifulSoup4 解析数据?

问题描述

以下是 .xml 文件中的示例:

    <title>Kaufsignal für Marriott International</title>
    <link>https://insideparadeplatz.ch/2015/03/06/kaufsignal-fuer-marriott-international/</link>
    <pubDate>Fri, 06 Mar 2015 </pubDate>
    <content:encoded>
        <![CDATA[
            <p class="p1">
                <span class="s1">Mit Marken wie Bulgari, Ritz-Carlton, Marriott und weiteren ist Marriott International nach sämtlichen Kriterien, die vom <a href="http://www.obermatt.com/de/home.html">
                <span class="s2">Obermatt-System</span></a></span> bewertet werden, ein interessantes Investment. Der Titel ist relativ gesehen günstig, das Unternehmen sollte weiter überproportional wachsen, und es ist solide finanziert, mit einem guten Verhältnis von Eigenkapital und Schulden. Über alle Kategorien gesehen landet die 
                <span class="s3">Marriott-Aktie</span></a>, die derzeit an der Technologiebörse Nasdaq bei rund 84 Dollar gehandelt wird, in der Wochenauswertung im Total-Ranking auf dem ersten Platz.

                <img class="aligncenter wp-image-17092 size-full" src="https://insideparadeplatz.ch/wp-content/uploads/2015/03/Total-Ranking-6-Mar-2015.png" alt="Total-Ranking 6 Mar 2015" width="873" height="627" /></a></p>]]>
    </content:encoded>

我想做的是,使用 beautifulsoup4,我能够提取 ' title', 'link', 'pubDate'。但问题是“内容:编码”。在这里,我想为我的“”从“内容:编码”中提取“img” img_list。我尝试了很多解决方案,但我得到的只是无。

title = []
link = []
date = []
img_list = []
for item in soup.find_all('item'):
    for t in item.find_all('title'):
        title.append(t.text)
for item in soup.find_all('item'):
    for l in item.find_all('link'):
        link.append(t.text)
for item in soup.find_all('item'):
    for date in item.find_all('pubDate'):
        pubDate.append(date.text)
for item in soup.find_all('item'):
    for data in item.find_all('content:encoded'):
        data.text

我试过:

for item in soup.find_all('item'):
    for data in item.find_all('content:encoded'):
        for img in data.find_all('img'):
            img_list.append(img.text)

但一无所获。我在这里缺少什么?

标签: pythonxmlparsingbeautifulsoup

解决方案


我认为您将无法获取该 img 数据。

for item in soup.find("content:encoded"):
   print(item)
   print(type(item))

然后查看:https

: //www.crummy.com/software/BeautifulSoup/bs4/doc/#navigablestring 所以 bs4 认为它是一个字符串,您需要手动解析它,或者将新字符串重新输入到新的 bs4 对象中


推荐阅读