通过在BeautifulSoup中添加“ .string”命令将元素丢失为“无”

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

我是编程新手,所以我很想问这个问题。但到目前为止,我在浏览此页面时找不到答案。

我使用BeautifulSoup提取德国报纸的段落。它工作得很好,但是当我将.string命令添加到包含带有标签的段落的变量中时,某些段落似乎消失/显示为“ None”。

这是我的代码:

import requests
from bs4 import BeautifulSoup

url = "https://www.zeit.de/wirtschaft/2020-05/konsumstimmung-handel-modebranche-einkaufen-corona"
r = requests.get(url)
r_html = r.text

soup = BeautifulSoup(r_html, features="html.parser")
para = soup.find_all('p', 'paragraph article__item')

for each in para:
    print(each.string)

link_1 = soup.find('a', 'article-pagination__link').get('href')


#next page

url_1 = link_1
r = requests.get(url_1)
r_html = r.text

soup = BeautifulSoup(r_html, features="html.parser")
for paragraph in soup.find_all('p', 'article__item'):
    print(paragraph.string) 

最后一行很重要:print(paragraph.string)

所以基本上:没有.string一切都很好,我得到了每个段落的输出。使用.string命令可吞下某些段落并将其输出为“无”。

这是怎么回事?

提前感谢!

python html beautifulsoup
1个回答
2
投票

尝试使用.text代替.string。它们之间有细微的差别-这就是.string的作用:

如果此元素具有单个字符串子代,则返回值为串。如果此元素具有一个子标记,则返回值为子标签的'string'属性(递归)。如果这个元素是本身是一个字符串,没有子代,或有多个子代,返回值是None

这就是.text的作用:

获取所有子字符串,使用给定的分隔符连接。

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