BeautifulSoup与lxml
在爬虫中,BeautfulSoup和lxml都是用来分析网页的,其中BeautifulSoup使用简单,但速度慢,也可以使用正则表达式来分析网页,获取有价值信息,但是正则表达式使用起来复杂,优点是速度快,最后lxml集合BeutifulSoup和正则表达式的优点,使用简单,速度也不比正则表达式慢。
一、BeautifulSoup
1、使用BeautifulSoup
使用BeautifulSoup需要从bs4模块导入BeautifulSoup,使用Beautiful有四种模式,具体看下图:
2、将html或者xml以适合人阅读的方式打印
BeautifulSoup对象的.prettify(),可以为Tag(标签、节点)换行补充,使得html和xml字符串容易理解。
print(soup.prettify())
3、获取tag的名字和属性
tag.name获取当前节点的名字
tag['xxx']获取当前节点的xxx属性值
tag.string获取当前节点的NavigableString类型,使用该方法有两个条件
(1)当前节点只有一个包含NavigableString类型的子节点
(2)或者当前节点只有一个子节点,且子节点符合条件(1)
4、获得当前节点的子节点和子孙节点
(1).contents和.children
.contents是获得当前节点的所有子节点,并且以列表的形式返回。
.children同样是获得当前节点的所有子节点,与.content不同的是,它是以迭代器啊形式返回的。
(2).descendant
.descendant是.children的进化版,以迭代器形式返回所有子孙节点
5、获取当前几点的父节点和父辈节点
(1).parent
.parent是返回当前节点的父节点
(2).parents
.parents与.children作用类似,以迭代器形式返回所有父辈节点
6、查询节点
查询的函数有下面这些,使用的参数基本一致。find的只返回匹配搜索条件的第一个节点,find_all则以迭代器形式返回所有匹配节点。
find
find_all
find_parent
find_parents
find_next_sibling
find_next_siblings
find_previous_sibling
find_previous_siblings
下面主要讲述find函数,其他函数类似,只不过搜索的类型不一样,还有一些不常用的方法就不一一列举了,有需要时可参考官方文档。有中文哟!
find(name,attrs,text,recursive,**kwargs)
find和find_all的搜索范围是所有子孙节点,下面是各个参数的说明
name就是需要查找的节点的名字
attrs就是传入字典,是需要查询的节点的属性和属性值
soup.find(attrs={'id':'input'})
text搜索NavigableString与之匹配的NavigableString,注意是NabvigableString
recurisive是选择搜索范围,当为True时,搜索范围所有的子孙节点。
**kwargs应该是指通过键值对来查询节点,与attrs类似,在一些地方**kwargs能完全替代attrs,而且不需要添加attrs这个参数名,但一些属性如data-*,但可以使用attrs来搜索。
7、使用css选择器
soup.select()
css选择器在BeautifulSoup和lxml中均能使用,会在最后介绍css选择器的主要语法。
二、lxml
1、使用etree解析html
from lxml import etree
tree = etree.HTML(html)
2、使用css选择器
tree.cssselect()
3、使用xpath
html.xpath()
4、显示节点的名字
Element对象.tag,可以显示该节点的名字
5、获取父节点
.getparent()
6、获取相邻的节点
.getprevious()和.getnext()
7、获取当前节点的属性值
tree[0].get('title')
7、打印节点
print(etree.tostring(tree,pretty_print=True))
三、css选择器
http://www.w3school.com.cn/cssref/css_selectors.asp
上面有详细的介绍我就不贴出来了
四、Xpath
http://www.w3school.com.cn/xpath/xpath_syntax.asp
同上,因为要睡觉了,就不重新默写一遍了。
BeautifulSoup与lxml相关推荐
- python爬虫lxml_python爬虫BeautifulSoup和Lxml性能对比
1.背景 Python爬虫的主要套路就是使用requests库获取网页源代码,然后再从网页源代码中提取自己所需的信息.之前的案例中从网页提取信息主要使用BeautifulSoup--美味汤,确实很美味 ...
- 网络爬虫之BeautifulSoup和lxml
网络爬虫之BeautifulSoup和lxml 一.网络爬虫的概念 1.1 爬虫概念 1.1.1 什么是爬虫 1.1.2 为什么学习爬虫? 1.2 爬虫流程 二.爬虫常用包 2.1 Requests包 ...
- 【Python】BeautifulSoup导入lxml报错
报错的程序: content = bs4.BeautifulSoup(response.content.decode("utf-8"), "lxml") 报错如 ...
- python爬虫基础(二)~工具包: 下载包requests、urllib和解析包BeautifulSoup(bs4)、lxml.etree.xpath
目录 1. html下载工具包 1.1 urllib工具包 1.1.1 urllib错误一 1.2 Requests工具包 1.2.1 requests错误一 2. html解析工具包 2.1 Bea ...
- BeautifulSoup([your markup]) to this: BeautifulSoup([your markup], lxml) 解决未设置默认解析器的错误
在看时,敲了一些代码,其中报了一个错误为 BeautifulSoup([your markup]) to this: BeautifulSoup([your markup], "lxml&q ...
- 爬虫基础, 乱码问题, jupyter, urllib, requests, lxml, multiprocessing并发, session, beautifulsoup...
碰到乱码时解决方法 requests.get().text是根据HTML文件的headers中的编码来解码的, 出现乱码需要自己用content来获取信息然后解码 res = res.encode(' ...
- lxml安装_Beautiful Soup的安装和使用
不用正则也可匹配html语言,代替正则解析html的这个工具叫做Beautiful Soup(美味的汤?哈哈哈哈哈哈哈) 安装Beautiful Soup Pip install Beautiful ...
- python BeautifulSoup的简单使用
官网:https://www.crummy.com/software/BeautifulSoup/bs4/doc/ 参考:https://www.cnblogs.com/yupeng/p/336203 ...
- python爬取小说章节信息用pygame进行数据显示_爬虫不过如此(python的Re 、Requests、BeautifulSoup 详细篇)...
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 爬虫的本质就是一段自动抓取互联网信息的程序,从网络获取 ...
最新文章
- pch在c语言中占内存字节数,c语言期末测试题(附答案)
- mysql数据库修改编码
- cvc降噪和主动降噪_1MORE 主动降噪圈铁耳机图集
- 【LeetCode笔记】53. 最大子序和(Java、动态规划)
- C# .NET 使用 NPOI 生成 .xlsx 格式 Excel
- [IIS网站问题]设置防火墙协议及端口等问题
- unity插件共享汇总大全
- php安装libpng,求助:libpng编译问题
- Spring连环CVE-2015-5211和CVE-2020-5421漏洞升级教程!
- cortex a7 a53_试驾初体验--我与奥迪A7的七天之旅
- 京东扫描平台EOS—JS扫描落地与实践
- 桌面计算机没反应是什么意思,点击显示桌面没反应? 显示桌面没反应解决方法...
- linux硬件时间与系统时间不同步,Linux系统时钟和硬件时钟不一致
- 不规则形状渐变掩模(gradient mask)的生成
- 【JavaSE系列】世界上“最好的语言”——认识Java编程语言
- 温州医科大学计算机学院分数线,2017温州医科大学录取分数线
- 各行业商业数据分析报告网站汇总
- C#中文件转换为byte[]及Base64String
- 最新《Python项目实战集合》
- IO流如何选择字节流和字符流??
热门文章
- 机器学习1-线性模型及多分类
- Java移位运算符不外乎就这三种
- orthWind 数据库结构说明
- Python爬虫:ZzzFun动漫视频网
- 计算机网络安全(1)
- C语言修仙电影,长评 是宇宙啊 评《C语言修仙》 时间:2020-02-24 22:39:01
- L1 VS L2(深度学习中的L1与L2)
- 福州华侨中学计算机老师,三尺讲台著妙笔 谱写侨习好韶光——记2015级福州华侨中学实习队工作检查...
- 计算机内存如何查询,如何查看电脑物理内存
- 开发Enterprise JavaBeans