beautifulsoup解析
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选择器(#)、层级选择器
- 层级选择器:
div .dudu #lala 空格表示下面好多级
div > p > a > .lala > 只能是下面一级注意:select返回的永远是列表,可以通过下标提取指定的对象
- 根据标签名查找
练习
- 需求:爬取古诗文网中三国小说里的标题和内容
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+'\n\n\n')
print(title+' 已写入')
beautifulsoup解析的更多相关文章
- BeautifulSoup解析器的选择
BeautifulSoup解析器 在我们使用BeautifulSoup的时候,选择怎样的解析器是至关重要的.使用不同的解析器有可能会出现不同的结果! 今天遇到一个坑,在解析某html的时候.使用htm ...
- Python3.x的BeautifulSoup解析html常用函数
Python3.x的BeautifulSoup解析html常用函数 1,初始化: soup = BeautifulSoup(html) # html为html源代码字符串,type(html) == ...
- Python3.x:BeautifulSoup()解析网页内容出现乱码
Python3.x:BeautifulSoup()解析网页内容出现乱码 问题: start_html = requests.get(all_url, headers=Hostreferer) Beau ...
- python3+beautifulSoup4.6抓取某网站小说(三)网页分析,BeautifulSoup解析
本章学习内容:将网站上的小说都爬下来,存储到本地. 目标网站:www.cuiweijuxs.com 分析页面,发现一共4步:从主页进入分版打开分页列表.打开分页下所有链接.打开作品页面.打开单章内容. ...
- Python爬虫 | Beautifulsoup解析html页面
引入 大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据.因此,在聚焦爬虫中使用数据解析.所以,我们的数据爬取的流程为: 指定url 基于reque ...
- 第14.12节 Python中使用BeautifulSoup解析http报文:使用select方法快速定位内容
一. 引言 在<第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问>和<第14.11节 Python中使用BeautifulSo ...
- 第14.11节 Python中使用BeautifulSoup解析http报文:使用查找方法快速定位内容
一. 引言 在<第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问>介绍了BeautifulSoup对象的主要属性,通过这些属性可以访 ...
- BeautifulSoup解析库的介绍和使用
### BeautifulSoup解析库的介绍和使用 ### 三大选择器:节点选择器,方法选择器,CSS选择器 ### 使用建议:方法选择器 > CSS选择器 > 节点选择器 ## 测试文 ...
- BeautifulSoup解析非标准HTML的问题
发现问题: BeautifulSoup版本:4.3.2 在用BeautifulSoup.find_all()搜索HTML时,遇到下面的代码: <a href="/shipin/dong ...
随机推荐
- eclipse配置android开发环境并搭建第一个helloWord工程
一.搭建Android在eclipse下环境 一.JDK(不用安装 下载地址: http://www.xp510.com/xiazai/Application/program/23625.ht ...
- 记ubuntu下安装Anaconda
晚上尝试在ubuntu 16.04版本下安装python的Anaconda3发行版. 从清华源下载的Anaconda3-Linux 64位版本安装包,然后顺利的下一步,下一步.....一切顺利!结果到 ...
- Browser Screen
Screen对象 Screen对象包含有关客户端显示屏幕的信息. 注释:没有应用于screen对象的公开标准,不过所有浏览器都支持该对象. Screen对象属性 availHeight 返回显示屏幕的 ...
- python3基础11(正则表达式及re模块)
#生成re对象 compile# 之后再期调用 match search 返回匹配到的字符串# findall 返回匹配结果的列表#如果要对匹配的结果进行分组,可加(),并可通过\数字 去应用
- UOJ#130 【NOI2015】荷马史诗 K叉哈夫曼树
[NOI2015]荷马史诗 链接:http://uoj.ac/problem/130 因为不能有前缀关系,所以单词均为叶子节点,就是K叉哈夫曼树.第一问直接求解,第二问即第二关键字为树的高度. #in ...
- VS打包方法(安装和部署简介)——内含大量图片,密症慎入!
友情提示:内含大量文字.图片,密集恐惧症者慎入! 主要记述一下利用微软集成开发环境VS打包的方法和详细步骤. 1.新建打包工程 打开VS,文件->添加项目->新建项目(如图1),在添加新项 ...
- 打造颠覆你想象中的高性能,轻量级的webform框架-----如何替换webform的垃圾控件(第一天)
前文描述: 随着.net 推出 MVC框架以来,webform 与 mvc 的争论一直没有停止过,一直以来 mvc 的 拥护者远远高于 webform,但是webfrom的有些优势又是mvc而无法替 ...
- 【BZOJ1216】[HNOI2003] 操作系统(堆+模拟)
点此看题面 大致题意: 有\(n\)个任务,每个任务有4个属性:编号.到达时间.执行时间和优先级.每个单位时间,会执行一个优先级最高(若有多个优先级最高的,就先执行到达时间较早的)的任务,请你按完成的 ...
- app之间的跳转和传参问题
app 之间跳转和传参: 首先 创建2个app formApp (需要跳转到另外app的项目) toApp(被跳转的项目) 一:在toApp 项目中的操作: 1:创建URLSchemes ...
- python_39_变量补充
#使用eval()函数计算字符串中的有效表达式,并返回结果 a='1+3' print(eval(a)) b='''{ '闵行': { '人民广场': { '炸鸡店': {}, }, } ''' pr ...