Python网络抓取和BeautifulSoup的新手。
我想格式化以下内容,这样当它输出标签时,它就会缩进
H1 text
H2 text
H3 text
H2 text
...
等等。
from bs4 import BeautifulSoup
import requests
soup = BeautifulSoup(website.content, 'html.parser')
tags = soup.find_all(['h1', 'h2'])
for soups in tags:
print(soups.string)
非常感谢你的帮助。
您可以定义缩进/前缀的字典
preString = {'h1': '', 'h2': 't', 'h3':'tt', 'h4':'ttt'}
然后你可以循环打印,就像:
tags = soup.find_all([t for t in preString])
for soups in [t for t in tags if t.string]:
print(preString[soups.name]+soups.string)
我用if t.string
进行了筛选,以防它们里面有标签而不仅仅是文本。使用.text
可以获得全文,而不考虑子标签;如果你想要这样,并且你希望你的find_all
是独立的,你可以改为:
tags = soup.find_all(['h1', 'h2'])
for soups in tags:
preStr = preString[soups.name] if soups.name in preString else ''
print(preStr+soups.string)
(定义preStr
时,可以在else
之后添加默认缩进/前缀(