爬虫学习(十一)——bs4基础学习
ba4的介绍:
bs4是第三方提供的库,可以将网页生成一个对象,这个网页对象有一些函数和属性,可以快捷的获取网页中的内容和标签
lxml的介绍
lxml是一个文件的解释器,python自带的解释器是:html.parser
import re from bs4 import BeautifulSoup
# 把网页生成对象的对象拿出来
soup = BeautifulSoup(open("test.html",encoding="utf8"),"lxml")
# __str__此方法作用:打印对象会把对应的字符串打印出来
# print(soup)
# 打印出来的结果是网页的标签的字符串 #方式一. 根据标签进行查找,只能知道第一个标签
ret = soup.a print(ret)
# 输出结果:是网页中的第一个标签及其里边内容,返回的是一个标签对象
# 2.获取属性和内容 print(soup.a.attrs)
# 获取a标签中的属性,返回的是一个关于属性和属性值的字典,可以根据键值形式拿取属性值 print(soup.a["href"])
# 可以如此直接获取属性的值 print(soup.a.text)
print(soup.a.string)
print(soup.a.get_text())
# 可以获取标签中的内容
# 注意:如果标签中还有标签,怎获取标签内容是获取所有标签中的内容
print(soup.div.text.replace("\t","").replace("\n",""))
# 输出内容是:将制表符,换行符替换为空字符串 # 方式二,比第二种方式更加灵活,可以加(属性限制)条件,找到指定的标签
# 返回的是一个a标签的对象
tag = soup.find("a",class_="mu")
print(tag)
# 输出内容为a标签对象。
# 注意:再根据class类进行索引标签时,要写成class_形式,不能写成class
# 原因是class在python代码中是关键字,检索时防止代码错误识别!
tag1 = soup.find("a",class_= re.compile(r"^mu"))
print(tag1)
# 注意可以进行加正则表达式对标签进行筛选 print(soup.find_all("a") )
#同find()一样拿取所有的a标签,返回的是一个含a标签对象的列表 # 方式三,(重点)soup.select(),返回的是一个关于标签对象的列表
# 适用于css的样式选择器
tagre = soup.select(".mu")
# 使用选择器进行标签的筛选
print("*"*50)
print(tagre)
# 获取标签属性的值
print(tagre[0]["href"]) # 适用选择器种类
# 标签选择器
# 属性选择器
# id选择器
# class类选择器
# 层级选择器
# 伪类选择器
# 组合选择器 # 层级选择器(重点)
# div p a 后边的节点是前边节点的子节点就可以
print(soup.select(".tang #nan")) # div>p>span 后边的节点是前边节点的直接子节点就可以
print(soup.select(".tang>ul>li")) #属性选择器(几乎不用)
print(soup.select("a[class=mu]")) # 彩蛋:方式二和方式三组合使用
# 如:
c_soup = BeautifulSoup(open("test.html",encoding="utf8"),"lxml")
tag1 = c_soup.find("div",class_="tang")
print("*"*50)
print(tag1.select(".tang a"))
爬虫学习(十一)——bs4基础学习的更多相关文章
- [学习线路] 零基础学习hadoop到上手工作线路指导(初级篇)
		about云课程最新课程Cloudera课程 零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了. ... 
- Scala学习(一)--Scala基础学习
		Scala基础学习 摘要: 在篇主要内容:如何把Scala当做工业级的便携计算器使用,如何用Scala处理数字以及其他算术操作.在这个过程中,我们将介绍一系列重要的Scala概念和惯用法.同时你还将学 ... 
- ElasticSearch7.3学习(三十一)----Logstash基础学习
		一.Logstash基本介绍 Logstash 是一个功能强大的工具,可与各种部署集成. 它提供了大量插件,可帮助你解析,丰富,转换和缓冲来自各种来源的数据(文件.数据库......).logstas ... 
- java学习路线图-----java基础学习路线图(J2SE学习路线图)
		安装JDK和开发软件跳过,网上太多了,不做总结,以下是我总结的学习路线图,欢迎补充. JAVA基础语法 注释,标识符命名规则及Java中的关键字 Java基本数据类型 Java运算符与表达式 Java ... 
- Python学习---Django的基础学习
		django实现流程 Django学习框架: #安装: pip3 install django 添加环境变量 #1 创建project django-ad ... 
- C语言学习second--C语言基础学习
		1.标准C语言 C语言诞生于20世纪70年代,年龄比我们自己还要大,期间产生了很多标准,但是各种编译器对标准的支持不尽相同. ANSI C是使用的最广泛的一个标准,也是第一个正式标准,被称为“标准C语 ... 
- 零基础学习hadoop到上手工作线路指导(编程篇)
		问题导读: 1.hadoop编程需要哪些基础? 2.hadoop编程需要注意哪些问题? 3.如何创建mapreduce程序及其包含几部分? 4.如何远程连接eclipse,可能会遇到什么问题? 5.如 ... 
- 零基础学习hadoop到上手工作线路指导(初级篇)
		零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ... 
- Django基础学习二
		今天继续学习django的基础 学习用户提交url如何获得返回值 1.首先需要在工程的urls文件定义指定的urls要路由给哪个函数 在这个例子中,我们定义home的urls路由给views里的tes ... 
随机推荐
- c语言中的隐式函数声明(转)
			本文转自:http://www.jb51.net/article/78212.htm 在c语言里面开来还是要学习c++的编程习惯,使用函数之前一定要声明.不然,即使编译能通过,运行时也可能会出一些莫名 ... 
- 【LDAP】Openldap导入数据
			原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://jerry12356.blog.51cto.com/4308715/1851186 ... 
- HDU 4738——Caocao's Bridges——————【求割边/桥的最小权值】
			Caocao's Bridges Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ... 
- Xtrareport 交叉报表
			什么是交叉报表呢? 官方回答:交叉表报表是以交叉表形式呈现信息的报表. 交叉表 (或透视表) 类似于简单的普通数据绑定表格,但是改为在单个表格中呈现多维的分层级的信息,并含有每行和每列的自动排序.计数 ... 
- js中 var functionName = function() {} 和 function functionName() {} 两种函数声明的区别 (译)
			stackOverflow中看到了很久以前问的一个关于函数声明的问题,问题对函数剖析的特别深.这里翻译了一下组织成一篇小博文,加深一下对这两种声明方式的印象.虽是老调重弹,但是只要能帮助理解问题,不管 ... 
- 最小白的webpack+react环境搭建
			本文也同步发表在我的公众号“我的天空” 从零开始,用最少的配置.最少的代码.最少的依赖来搭建一个最简单的webpack+react环境. 最近在玩webpack+react+移动端,那么第一步自然是搭 ... 
- linux 封禁ip
			可以直接服务配置nginx.conf 添加 deny+IP 例如: 封禁单个IP deny 106.5.76.83; #封整个段即从123.0.0.1到123.255.255.254的命令deny 1 ... 
- C++ Knowledge series STL & Const
			Thank to the pepole who devote theirself to the common libs. STL(http://www.cplusplus.com/reference/ ... 
- C++ Knowledge series overloading
			What does the compiler behind our programming? Overloading in C++ Override all of overloaded functio ... 
- python字符转码
			字符的编码与转码 demo UTF-8 转GBK python2.7 默认编码ASCII 没有转Unicode 直接转GBK 1 .系统的默认编码是ASCII , 程序的指定编码是UTF-8,在enc ... 
