1. 美丽汤(BeautifulSoup)模块介绍
BeautifulSoup是Python中常用的一个HTML和XML解析器,主要用于从网页中提取数据。BeautifulSoup可以通过搜索文档树来找到特定的元素。同时,它也可以修复一些不标准的HTML和XML文档,使得这些文档可以被其他解析器正确解析。
1.1 BeautifulSoup模块的安装
在使用BeautifulSoup之前,需要先安装该模块。使用pip install即可安装,如下:
pip install BeautifulSoup4
1.2 BeautifulSoup模块的基本用法
使用BeautifulSoup对网页进行解析时,需要将网页的HTML代码作为参数传入BeautifulSoup类中,如下:
from bs4 import BeautifulSoup
html_doc ="""
Document
This is a paragraph.
This is another paragraph.
"""
soup = BeautifulSoup(html_doc, 'html.parser')
上述代码中,将html_doc作为参数传入BeautifulSoup类中,返回一个BeautifulSoup对象。通过该对象,可以使用多个搜索方法,如find、find_all、select等达到从网页中提取数据的目的。
2. 使用BeautifulSoup模块解析网页
下面以爬取百度首页上的搜索框为例,介绍如何使用BeautifulSoup模块进行网页解析。
2.1 抓取网页HTML代码
使用urllib库抓取百度首页的HTML代码,如下:
import urllib.request
url = 'https://www.baidu.com/'
req = urllib.request.urlopen(url)
html_doc = req.read().decode('utf-8')
2.2 解析网页代码
将抓取到的HTML代码作为参数传入BeautifulSoup类中,使用select方法获取搜索框对应的HTML代码,如下:
soup = BeautifulSoup(html_doc, 'html.parser')
search_input = soup.select('.s_form [name="wd"]')[0]
上述代码中,通过.select()方法获取到搜索框对应的HTML代码,.s_form表示class为s_form的元素,[name="wd"]表示name属性为"wd"的元素。
2.3 输出结果
将获取到的结果输出出来,如下:
print(search_input)
运行以上代码,可以得到搜索框对应的HTML代码。
结果输出:
3. 使用BeautifulSoup模块解析HTML文档中的URL
在网页解析过程中,经常需要从HTML文档中提取URL。下面以爬取Python官网中的新闻链接为例,介绍如何使用BeautifulSoup模块解析HTML文档中的URL。
3.1 抓取网页HTML代码
使用urllib库抓取Python官网首页的HTML代码,如下:
import urllib.request
url = 'https://www.python.org/'
req = urllib.request.urlopen(url)
html_doc = req.read().decode('utf-8')
3.2 解析HTML文档中的URL
将抓取到的HTML代码作为参数传入BeautifulSoup类中,使用find_all方法查找所有的a标签,进而获取到其中的href属性,如下:
soup = BeautifulSoup(html_doc, 'html.parser')
urls = []
for link in soup.find_all('a'):
url = link.get('href')
urls.append(url)
上述代码中,通过循环遍历所有的a标签,通过.get()方法获取href属性的值,然后将这些URL保存在列表urls中。
3.3 输出结果
将获取到的结果输出出来,如下:
for url in urls:
print(url)
运行以上代码,可以得到Python官网中所有链接的URL。
结果输出:
# https://twitter.com/ThePSF
# https://www.facebook.com/pythonlang?fref=ts
# ...
# https://status.python.org/
# http://www.python.org/psf/donations/gef/