爬虫之解析库BeautifulSoup
介绍
Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。官方解释如下:
Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。 Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。 Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。
使用方法
(1) 根据标签名查找
- suop.a 只能找到第一个符合要求的标签
(2) 获取属性值
- suop.a.attrs 获取a所有的属性和属性值,返回一个字典
- suop.a.attrs["href"] 获取href属性值
- suop.a["href"] 简写为这种形式
(3) 获取内容
- suop.a.string 获取标签中直系的文本内容
- suop.a.text 获取所有标签中的文本内容
- suop.a.get_text() 获取所有标签中的文本内容
【注意】如果标签中还有标签,那么string获取到的结果为None,其他两个方法可以获取到文本内容
(4) find 找到第一个符合要求的标签
- suop.find("a") 找到第一个符合要求的
# 根据标签中的属性获取指定的a标签
- suop.find("a", class_="xxx") # class是关键字需要加_
- suop.find("a", id="xxx")
- suop.find("a", href="xxx")
- suop.find("a", alt="xxx")
- suop.find("a", tetle="xxx")
# 可以和获取内容的方法连用
- suop.find("a",href="/hecheng/27.html").text
(5) find_all 找到所有符合要求的标签
- suop.find_all("a")
- suop.find_all(["a","p"]) 找到所有a标签和p标签
- suop.find_all(["a","p"],limit=2) 取前两个
(6) 根据选择器选择指定的内容
select:suop.select("#id")
- 常见的选择器:标签选择器(a)|类选择器(.)|id选择器(#)|层级选择器
- 层级选择器:
div .mm div下面所有class属性值为mm的,子子孙孙,下面多级
div > .dd div儿子级class属性为dd的,下面一级
【注意】查询到的是所有数据,返回列表
项目演示
import requests
import lxml
from bs4 import BeautifulSoup
url = "http://www.shicimingju.com/book/sanguoyanyi.html"
response = requests.get(url).text
suop = BeautifulSoup(response,'lxml') # 实例化对象,使用lxml进行解析
a_list = suop.select('.book-mulu > ul > li > a')
url = "http://www.shicimingju.com"
for a in a_list:
fiction_name = a.string # 小说章节名称
fiction_url = url+a["href"] # 小说章节url地址
response = requests.get(fiction_url).text # 请求每个章节的url地址
suop = BeautifulSoup(response,'lxml')
content = suop.find("div",class_="chapter_content").text # 获取标签内所有文本数据
with open("./{}.txt".format(fiction_name),"w",encoding="utf-8") as fp:
fp.write(content)
print("下载成功!!!")
select选择器选择a标签中的文本内容和gref属性

效果

爬虫之解析库BeautifulSoup的更多相关文章
- Python爬虫【解析库之beautifulsoup】
解析库的安装 pip3 install beautifulsoup4 初始化 BeautifulSoup(str,"解析库") from bs4 import BeautifulS ...
- 爬虫解析库——BeautifulSoup
解析库就是在爬虫时自己制定一个规则,帮助我们抓取想要的内容时用的.常用的解析库有re模块的正则.beautifulsoup.pyquery等等.正则完全可以帮我们匹配到我们想要住区的内容,但正则比较麻 ...
- 爬虫----爬虫解析库Beautifulsoup模块
一:介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你 ...
- 爬虫之解析库-----re、beautifulsoup、pyquery
一.介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你 ...
- 爬虫解析库BeautifulSoup的一些笔记
BeautifulSoup类使用 基本元素 说明 Tag 标签,最基本的信息组织单元,分别是<>和</>标明开头和结尾 Name 标签的名字,<p></p ...
- 爬虫解析库beautifulsoup
一.介绍 Beautiful Soup是一个可以从HTML或XML文件中提取数据的python库. #安装Beautiful Soup pip install beautifulsoup4 #安装解析 ...
- python爬虫数据解析之BeautifulSoup
BeautifulSoup是一个可以从HTML或者XML文件中提取数据的python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式. BeautfulSoup是python爬虫三 ...
- python爬虫之解析库Beautiful Soup
为何要用Beautiful Soup Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式, 是一个 ...
- 解析库beautifulsoup
目录 一.介绍 二.遍历文档树 三.搜索文档树(过滤) 四.修改文档树 五.总结 一.介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的 ...
随机推荐
- CAS 5.x搭建常见问题系列(2).PKIX path building failed
错误原因 服务端的证书是不安全的,Cas的客户端在调用时因为安全提醒造成调用失败. CAS的客户端需要导入服务端的证书后,就正常了. 具体操作步骤如下: 1. 首先启动tomcat,看下之前搭建的ca ...
- (二十四)JSP标签之基本标签(<jsp:标签名>)
一.常用标签 1.1 jsp中标签一共有8中,其中常用的有6中,本文将介绍这6种常用的标签. 1.2 6种标签 1. <jsp:include> <jsp:include>标签 ...
- Vue绑定的table页面在Chrome浏览器左右抖动
现象: 今天Chrome浏览器升级到最新版本(75.0.3770.100),突然发现之前vue页面只要绑定了el-table标签的,都在左右抖动,抖动得眼睛都花了,百度上找半天也没有遇到相同问题的人, ...
- 【es6】将2个数组合并为一个数组
//第一种 一个数组中的值为key 一个数组中的值为value let arr1 = ['内存','颜色','尺寸']; let arr2 = [1,2,3]; let temp = arr1.map ...
- 踩坑记录-用koa-session设置session报错
报如下错误: 原因 设置signed: true后,它就会寻找req.secret(一个秘钥字符串),进行加密 allen返回浏览器. const SESS_CONFIG = { key: 'kkb: ...
- Oracle nvl()函数处理null值
首先我先说一下什么是Oracle的函数,曾经有一位大牛,让我说说熟悉的oracle函数,我当时竟一头雾水,心想“什么oracle函数啊,不就是那些SQL语句吗“,当时我竟然说出了select之类的回答 ...
- linux添加地址映射
- Go语言——值方法 & 指针方法
1 package main import ( "fmt" "sort" ) type SortableStrings []string type Sortab ...
- Visual studio 2010 打开高版本VS工程解决办法
第一步.找到工程项目文件: 第二步.编辑项目文件 找到Format Version 12.00 ,将数字改为11.00 再找到#Visual Studio 14 将数字改为2010 点击保存并关闭 第 ...
- ZZNU-OJ-2118 -(台球桌面碰来碰去,求总距离)——模拟到爆炸【超时】的不能AC的代码
ZZNU-2118 : 早安晚安,不如我先入土为安 题目描述 spring比较喜欢玩台球,因为看着台球在桌子上碰来碰去很有意思(台球撞壁反弹,入射角等于反射角),每次完美的台球入洞,都能体现他数学天才 ...