我是编程新手,所以我很想问这个问题。但到目前为止,我在浏览此页面时找不到答案。
我使用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
命令可吞下某些段落并将其输出为“无”。
这是怎么回事?
提前感谢!
尝试使用.text
代替.string
。它们之间有细微的差别-这就是.string
的作用:
如果此元素具有单个字符串子代,则返回值为串。如果此元素具有一个子标记,则返回值为子标签的'string'属性(递归)。如果这个元素是本身是一个字符串,没有子代,或有多个子代,返回值是None。
这就是.text
的作用:
获取所有子字符串,使用给定的分隔符连接。