BeautifulSoup:在汤中插入换行符。get_text

时间:2018-08-09 10:07:03

标签: python beautifulsoup

我正在尝试从站点中提取特定类和特定名称下的所有文本,因此之后可以将其放在excel文件中。但是,当我使用

soup.get_text("strong", {"class": "literal"})

https://automatetheboringstuff.com/chapter11/上(这只是一个示例),我得到的所有文本都没有一个换行符。是否可以像在网站上一样获得文本,并在各段之后逐段纠正换行符?谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用str.join()打印带有换行符的文本:

from bs4 import BeautifulSoup
import requests

r = requests.get('https://automatetheboringstuff.com/chapter11/')
soup = BeautifulSoup(r.text, 'lxml')

print('\n'.join(strong.text for strong in soup.select('strong.literal')))

打印:

import webbrowser
webbrowser.open('http://inventwithpython.com/')
pyperclip
else:
# Get address from clipboard.
address = pyperclip.paste()
webbrowser.open('https://www.google.com/maps/place/' + address)
import requests
import requests

...and so on.

答案 1 :(得分:0)

这是一个方便的单行代码,您可以使用它来替换代码段:

results = list(map(lambda x: x.get_text(), soup.find_all("strong", {"class": "literal"})))
# or even better:
results = [el.get_text() for el in soup.find_all("strong", {"class": "literal"})]

这将导致一个列表,该列表获取与搜索条件相匹配的找到的每个元素的文本。然后,您可以将字符串方法(str.join)用于此列表,而已showed in another answer,也可以使用常规的迭代方式:

for result in soup.find_all("strong", {"class": "literal"}):
    result = result.get_text()
    # proceed here, e. g.
    print(result)  # This will print out the site as wanted