概述
beautifulsoup解析
python独有
优势:简单、便捷、高效 - 环境安装 需要将pip源设置为国内源 -需要安装:pip install bs4 bs4在使用时需要一个第三方库 pip install lxml
流程:
核心思想:可以将html文档转换成Beautiful对象,然后调用对象属性和方法进行html指定内容的定位和查找
- 1.导包
- 2.创建Beautiful对象:
- 如果html文档来源于本地:Beautiful('open('本地html文件)',lxml)
- 如果html文档来源于网络:Beautiful('网络请求到的页面数据','lxml')
- 3.使用方法和属性:
- 根据标签名查找
- soup.a 只能找到第一个符合要求的标签
- 获取属性
- soup.a.attrs 获取a所有的属性和属性值,返回一个字典
- soup.a.attrs['href'] 获取href属性 也可以简写为 soup.a['href']
- 获取内容
- soup.a.string
- soup.a.text
- soup.a.get_text() 注意:如果标签还有标签,那么string获取的结果为None,而其他两个,可以获取文本内容 -find:找到第一个符合要求的标签
- soup.find('a')
- soup.find('a',title='xxx') 类似的
- soup.find('a',id='xxx') -finAll 获取所有符合条件的标签
- soup.findAll('a')
- soup.findAll(['a','b']) 找到所有的a标签和b标签
- soup.findAll('a',limit=2) 限制取前两个
- 根据选择器选择指定的内容 soup.select() -常见的选择器:标签选择器、类选择器(.)、id选择器(#)、层级选择器
注意:select返回的永远是列表,可以通过下标提取指定的对象- 层级选择器: div .dudu #lala 空格表示下面好多级 div > p > a > .lala > 只能是下面一级
- 根据标签名查找
练习
- 需求:爬取古诗文网中三国小说里的标题和内容
import requests from bs4 import BeautifulSoup url = 'http://www.shicimingju.com/book/sanguoyanyi.html' # 自定义请求头信息 headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' } page_text = requests.get(url=url,headers=headers).text # 数据解析 soup = BeautifulSoup(page_text,'lxml') li_list=soup.select('.book-mulu > ul > li > a') # type(li_list[0]) bs4.element.Tag Tag类型的数据可以继续调用属性方法进行解析 f = open('./三国演义.txt','w',encoding='utf-8') for li in li_list: title = li.text # print(type(title)) conten_url ='http://www.shicimingju.com' + li.attrs['href'] content_page = requests.get(url=conten_url,headers=headers).text content_soup = BeautifulSoup(content_page,'lxml') content = content_soup.select('.chapter_content')[0] # print(content.text) f.write(title+content.text+'nnn') print(title+' 已写入')
转载于:https://www.cnblogs.com/yuliangkaiyue/p/10001783.html
最后
以上就是开放长颈鹿为你收集整理的beautifulsoup解析beautifulsoup解析的全部内容,希望文章能够帮你解决beautifulsoup解析beautifulsoup解析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复