爬虫学习(十一)——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 ...
随机推荐
- PHP substr()函数
PHP substr()函数可以分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_strcut这个函数,mb_substr() /mb_strcut的用法 ...
- 【linux】关于linux命令
1. 删除空目录文件夹rmdir [options] DIRECTORY Ubuntu默认的源是国外的,下载速度会比较慢,cd /etc/apt gedit /etc/apt/
- MySQL锁行锁表
select..for update; 给数据库表手动上锁 --锁行Begin; for update; --给 id=1 的行加上排它锁且 id 有索引 ; Commit; -- 锁表 BEGIN; ...
- java webServer(一)
java webServer实现 浏览器和服务器使用的是http协议,http协议使用的是tcp 这里主要在服务器端监听端口号 实现功能 通过浏览器向服务器发送http请求:http://localh ...
- 基于nodejs的DNS查询工具
开始这个实例之前,我们简单谈一下Node.js吧,Node.js是一个由JavaScript书写而成的强大Web开发框架,它让开发强壮的.伸缩性良好的服务器端Web应用变得更加简单.容易.这种技术诞生 ...
- Android 关于apk 打包后的地图定位和导航失败的问题
项目中,使用了高德地图定位,调试的debug包定位完全没有问题,但是签名打包后,却始终无法定位,发现是测试环境下的SHA1码和签名发布版的SHA1码是不同的. 所以我们需要获取发布版的SHA1码: 方 ...
- Developer - 如何自我保证Node.js模块质量
组里正在做SaaS产品,其中一些模块(Module)是Node.js实现,这里我们主要使用Node.js实现Web Server来提供服务. 在做SaaS项目之前,组里的开发模式是传统的Deverlo ...
- dell Nx000系列交换机
dell n2048(P) dell n3048(P) dell n4064(F) P: PoE+ F: SFP+ Model GbE 10GbE(SFP+) 40GbE(QSFP+) Layer d ...
- DB2安装教程图解
下载好之后,是exe文件,但是双击后基本上都是解压,但是使用自身的解压的话会有很多文件解压失败的情况,所以推荐使用自己电脑上自带的解压工具直接解压(如360解压,好压等). 解压之后直接运行setup ...
- 在android开发中如何使用JavaMail程序
javaMail,是提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开发出类似于Microsoft ...