在Python中进行网络爬虫开发时,我们经常需要解析HTML源码,提取指定的信息。为了实现这一功能,Python提供了很多第三方库,其中比较常用的是BeautifulSoup。本文将详细讲解BeautifulSoup模块的使用方法。
在使用BeautifulSoup模块之前,需要先安装该模块。可以使用pip命令进行安装:
pip install beautifulsoup4
安装完成后,就可以开始使用BeautifulSoup模块了。
使用BeautifulSoup模块可以方便地解析HTML源码,获取指定的信息。下面是一些常用的基础语法:
from bs4 import BeautifulSoup # 创建BeautifulSoup对象 soup = BeautifulSoup(html_doc, 'html.parser') # 获取标签 soup.tag # 获取标签属性 soup.tag['attr'] # 获取标签内容 soup.tag.string # 获取标签子节点 soup.tag.children # 获取标签父节点 soup.tag.parent
其中,html_doc
是HTML源码,tag
是指定的标签,attr
是指定的属性。
在实际开发中,我们经常需要用到一些常用函数来解析HTML源码。下面列举了一些常用函数及其用法:
# find()函数:返回第一个匹配的结果 soup.find('tag', attrs={'attr': 'value'}) # find_all()函数:返回所有匹配的结果 soup.find_all('tag', attrs={'attr': 'value'}) # select()函数:支持CSS选择器,返回所有匹配的结果 soup.select('tag[attr=value]') # get_text()函数:获取标签内容 soup.get_text()
其中,tag
是指定的标签,attr
是指定的属性,value
是指定的属性值。
在使用BeautifulSoup模块时,还需要注意一些细节用法,以免出现错误。下面列举了一些常见的细节用法:
# 遍历标签 for tag in soup.find_all('tag'): print(tag.string) # 判断标签是否存在 if soup.tag is not None: print(soup.tag.string) # 正则表达式匹配 import re soup.find_all(re.compile('^t'))
下面是一个具体的代码案例,实现了爬取豆瓣电影排行榜的功能。
import requests from bs4 import BeautifulSoup url = 'https://movie.douban.com/chart' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36' } response = requests.get(url, headers=headers) html_doc = response.text soup = BeautifulSoup(html_doc, 'html.parser') for tag in soup.find_all('div', class_='pl2'): print(tag.a.string.strip())
以上代码将输出豆瓣电影排行榜中的电影名称。
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com