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基础学习的更多相关文章

  1. [学习线路] 零基础学习hadoop到上手工作线路指导(初级篇)

    about云课程最新课程Cloudera课程   零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了. ...

  2. Scala学习(一)--Scala基础学习

    Scala基础学习 摘要: 在篇主要内容:如何把Scala当做工业级的便携计算器使用,如何用Scala处理数字以及其他算术操作.在这个过程中,我们将介绍一系列重要的Scala概念和惯用法.同时你还将学 ...

  3. ElasticSearch7.3学习(三十一)----Logstash基础学习

    一.Logstash基本介绍 Logstash 是一个功能强大的工具,可与各种部署集成. 它提供了大量插件,可帮助你解析,丰富,转换和缓冲来自各种来源的数据(文件.数据库......).logstas ...

  4. java学习路线图-----java基础学习路线图(J2SE学习路线图)

    安装JDK和开发软件跳过,网上太多了,不做总结,以下是我总结的学习路线图,欢迎补充. JAVA基础语法 注释,标识符命名规则及Java中的关键字 Java基本数据类型 Java运算符与表达式 Java ...

  5. Python学习---Django的基础学习

    django实现流程 Django学习框架:     #安装: pip3 install django          添加环境变量    #1  创建project       django-ad ...

  6. C语言学习second--C语言基础学习

    1.标准C语言 C语言诞生于20世纪70年代,年龄比我们自己还要大,期间产生了很多标准,但是各种编译器对标准的支持不尽相同. ANSI C是使用的最广泛的一个标准,也是第一个正式标准,被称为“标准C语 ...

  7. 零基础学习hadoop到上手工作线路指导(编程篇)

    问题导读: 1.hadoop编程需要哪些基础? 2.hadoop编程需要注意哪些问题? 3.如何创建mapreduce程序及其包含几部分? 4.如何远程连接eclipse,可能会遇到什么问题? 5.如 ...

  8. 零基础学习hadoop到上手工作线路指导(初级篇)

    零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ...

  9. Django基础学习二

    今天继续学习django的基础 学习用户提交url如何获得返回值 1.首先需要在工程的urls文件定义指定的urls要路由给哪个函数 在这个例子中,我们定义home的urls路由给views里的tes ...

随机推荐

  1. REST面向资源架构 RESTful架构

    REST基础概念: 在REST中的一切都被认为是一种资源. 每个资源由URI标识. 使用统一的接口.处理资源使用POST,GET,PUT,DELETE操作类似创建,读取,更新和删除(CRUD)操作. ...

  2. C# 压缩 解压 复制文件夹,文件的操作

    命名空间:namespace System.IO.Compression 压缩: //目标文件夹 string fileDirPath = "/Downloads/试题" + us ...

  3. 给主程序签名及第三方dll强签名

    给主程序添加签名   添加完成后会自动生成一个*.pfx文件.     给程序添加强签名方法:   本文以Quartz.dll为例,使用vs Tools下的工具命令.   打开命令工具是这个样子,   ...

  4. Mysql远程连接授权IP

    新增法   我们现在增加一个'username'用户,密码为'password',让其能够从外部访问MYSQL. grant all on * to 'username' identified by ...

  5. Spring-cloud微服务 Eureka学习教程-分布式搭建EurekaServer、EurekaClient+Ribbon(中级)

    我们这里只有一台服务器,所以我们先仿集群搭建. 完整demo项目代码:https://github.com/wades2/EurekaDemo2 在这之前我们先分析分析Eureka相比其他注册中心的好 ...

  6. vue学习第四天 ------ 临时笔记

    1.驼峰写法 在html标签中,由于html的特性是不区分大小写(比如LI和li是一样的),因此,html标签中要传递的值要写成短横线式的(如btn-test),以区分大小写. 在props的数组中, ...

  7. css属性(常用属性整理)

    摘要:本文是我在学习前端的过程中整理的一些常用css属性,部分是css3新增的,因能力有限,文中如有错误,欢迎提出,我会及时修改.希望对大家有帮助! CSS属性 CSS属性 1 1. css颜色属性 ...

  8. 如何提升SharePoint 2010的性能

    文章来自: http://www.chinaemail.com.cn/server/xtfl/Exchange/201109/66466.html SharePoint是微软历史上销售量增长最快的产品 ...

  9. ansible使用8-Best Practices

    Content Organization production # inventory file for production servers stage # inventory file for s ...

  10. Linux命令之创建文件夹3

    1)mkdir  fyr即可在当前目录下创建一个文件夹 2)在fyr文件夹下创建一个子目录 mkdir fyr/fyr1 注意:如果不存在父层目录直接创建对应父层目录下的子目录mkdir  FYR/f ...