我正在尝试从站点中提取特定类和特定名称下的所有文本,因此之后可以将其放在excel文件中。但是,当我使用
soup.get_text("strong", {"class": "literal"})
在https://automatetheboringstuff.com/chapter11/上(这只是一个示例),我得到的所有文本都没有一个换行符。是否可以像在网站上一样获得文本,并在各段之后逐段纠正换行符?谢谢!
答案 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