在Python中进行网络爬虫开发时,我们经常需要解析HTML源码,提取指定的信息。为了实现这一功能,Python提供了很多第三方库,其中比较常用的是BeautifulSoup。本文将详细讲解BeautifulSoup模块的使用方法。
在使用BeautifulSoup模块之前,需要先安装该模块。可以使用pip命令进行安装:
1 | pip install beautifulsoup4 |
安装完成后,就可以开始使用BeautifulSoup模块了。
使用BeautifulSoup模块可以方便地解析HTML源码,获取指定的信息。下面是一些常用的基础语法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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源码。下面列举了一些常用函数及其用法:
1 2 3 4 5 6 7 8 9 10 11 | # 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模块时,还需要注意一些细节用法,以免出现错误。下面列举了一些常见的细节用法:
1 2 3 4 5 6 7 8 9 10 11 | # 遍历标签 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' )) |
下面是一个具体的代码案例,实现了爬取豆瓣电影排行榜的功能。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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