在爬虫中,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相关推荐

  1. python爬虫lxml_python爬虫BeautifulSoup和Lxml性能对比

    1.背景 Python爬虫的主要套路就是使用requests库获取网页源代码,然后再从网页源代码中提取自己所需的信息.之前的案例中从网页提取信息主要使用BeautifulSoup--美味汤,确实很美味 ...

  2. 网络爬虫之BeautifulSoup和lxml

    网络爬虫之BeautifulSoup和lxml 一.网络爬虫的概念 1.1 爬虫概念 1.1.1 什么是爬虫 1.1.2 为什么学习爬虫? 1.2 爬虫流程 二.爬虫常用包 2.1 Requests包 ...

  3. 【Python】BeautifulSoup导入lxml报错

    报错的程序: content = bs4.BeautifulSoup(response.content.decode("utf-8"), "lxml") 报错如 ...

  4. 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 ...

  5. BeautifulSoup([your markup]) to this: BeautifulSoup([your markup], lxml) 解决未设置默认解析器的错误

    在看时,敲了一些代码,其中报了一个错误为 BeautifulSoup([your markup]) to this: BeautifulSoup([your markup], "lxml&q ...

  6. 爬虫基础, 乱码问题, jupyter, urllib, requests, lxml, multiprocessing并发, session, beautifulsoup...

    碰到乱码时解决方法 requests.get().text是根据HTML文件的headers中的编码来解码的, 出现乱码需要自己用content来获取信息然后解码 res = res.encode(' ...

  7. lxml安装_Beautiful Soup的安装和使用

    不用正则也可匹配html语言,代替正则解析html的这个工具叫做Beautiful Soup(美味的汤?哈哈哈哈哈哈哈) 安装Beautiful Soup Pip install Beautiful ...

  8. python BeautifulSoup的简单使用

    官网:https://www.crummy.com/software/BeautifulSoup/bs4/doc/ 参考:https://www.cnblogs.com/yupeng/p/336203 ...

  9. python爬取小说章节信息用pygame进行数据显示_爬虫不过如此(python的Re 、Requests、BeautifulSoup 详细篇)...

    网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 爬虫的本质就是一段自动抓取互联网信息的程序,从网络获取 ...

最新文章

  1. pch在c语言中占内存字节数,c语言期末测试题(附答案)
  2. mysql数据库修改编码
  3. cvc降噪和主动降噪_1MORE 主动降噪圈铁耳机图集
  4. 【LeetCode笔记】53. 最大子序和(Java、动态规划)
  5. C# .NET 使用 NPOI 生成 .xlsx 格式 Excel
  6. [IIS网站问题]设置防火墙协议及端口等问题
  7. unity插件共享汇总大全
  8. php安装libpng,求助:libpng编译问题
  9. Spring连环CVE-2015-5211和CVE-2020-5421漏洞升级教程!
  10. cortex a7 a53_试驾初体验--我与奥迪A7的七天之旅
  11. 京东扫描平台EOS—JS扫描落地与实践
  12. 桌面计算机没反应是什么意思,点击显示桌面没反应? 显示桌面没反应解决方法...
  13. linux硬件时间与系统时间不同步,Linux系统时钟和硬件时钟不一致
  14. 不规则形状渐变掩模(gradient mask)的生成
  15. 【JavaSE系列】世界上“最好的语言”——认识Java编程语言
  16. 温州医科大学计算机学院分数线,2017温州医科大学录取分数线
  17. 各行业商业数据分析报告网站汇总
  18. C#中文件转换为byte[]及Base64String
  19. 最新《Python项目实战集合》
  20. IO流如何选择字节流和字符流??

热门文章

  1. 机器学习1-线性模型及多分类
  2. Java移位运算符不外乎就这三种
  3. orthWind 数据库结构说明
  4. Python爬虫:ZzzFun动漫视频网
  5. 计算机网络安全(1)
  6. C语言修仙电影,长评 是宇宙啊 评《C语言修仙》 时间:2020-02-24 22:39:01
  7. L1 VS L2(深度学习中的L1与L2)
  8. 福州华侨中学计算机老师,三尺讲台著妙笔 谱写侨习好韶光——记2015级福州华侨中学实习队工作检查...
  9. 计算机内存如何查询,如何查看电脑物理内存
  10. 开发Enterprise JavaBeans