现在是时候在HTML页面中测试我们的Beautiful Soup包了(这里我们采用网页 https://yoagoa.com/,你可以选择任何一个你想使用的网页)并从中提取一些信息。
在下面的代码中,我们尝试从网页中提取标题:
from bs4 import BeautifulSoup
import requests
url = "https://yoagoa.com/"
req = requests.get(url)
soup = BeautifulSoup(req.content, "html.parser")
print(soup.title)
输出
<title>优构网 - 技术探索驿站 - 分享最有价值的互联网技术干货<title>
一个常见的任务是从网页中提取所有的URL。为此,我们只需要添加以下代码行:
for link in soup.find_all('a'):
print(link.get('href'))
输出 下面是以上循环的部分输出:
https://yoagoa.com/course/cpp/
https://yoagoa.com/course/java/
https://yoagoa.com/course/python/
https://yoagoa.com/course/csharp/
https://yoagoa.com/course/javascript/
https://yoagoa.com/course/artificial-intelligence-with-python/
https://yoagoa.com/course/beautiful-soup/
……
……
本地存储的网页解析
要解析当前工作目录中本地存储的网页,获取指向html文件的文件对象,并将其作为参数传递给BeautifulSoup()
构造函数。
from bs4 import BeautifulSoup
with open("index.html") as fp:
soup = BeautifulSoup(fp, 'html.parser')
print(soup)
输出
<html>
<head>
<title>你好,世界</title>
</head>
<body>
<h1 style="text-align:center;">你好,世界</h1>
</body>
</html>
你也可以使用包含HTML脚本的字符串作为构造函数的参数,如下所示:
from bs4 import BeautifulSoup
html = '''
<html>
<head>
<title>你好,世界</title>
</head>
<body>
<h1 style="text-align:center;">你好,世界</h1>
</body>
</html>
'''
soup = BeautifulSoup(html, 'html.parser')
print(soup)
Beautiful Soup使用最佳可用的解析器来解析文档。除非另有指定,否则它将使用HTML解析器。