Python练习 --学习笔记

Beautiful Soup库使用

Beautiful Soup库是一个可以解析HTML和xlm文件的库,可以在使用requests库获取html格式文件后对其进行处理

一、Beautiful Soup库的基本元素

(1)tag

标签,最基本的信息单元,与HTML中的标签意义相同
使用 .tag的形式获得一个标签

(2)name

标签的名字, tag .name 形式调用,以字符串格式返回一个标签的名称

(3)attributes

标签的属性,以字典格式返回这个标签的属性值
tag .attrs 格式调用

(4)NavigableString

返回标签中非属性值的字符串部分,即<>…</>中的部分
tag .string 格式调用

(5)Comment

注释,不会被显式调用,通常在使用.string后将返回的字符串使用type()方法检测格式判断是否为注释内容

二、Beautiful Soup库的遍历方法

将整个HTML文件理解为标签树的形式
需要特别注意的是,标签中的Navigable String也构成了节点,所以在遍历时的下一个节点不一定是标签类型,需要做特别判断

HTMl
body
head
<p>
<p>
<title>

1、下行遍历方法

指自上而下的遍历方式

.contents

子节点的列表类型,将所以tag标签的儿子节点全部存入

.children

与 .contents类似,用于遍历循环所有儿子节点,不同点在于 .children 是迭代类型

.descendants

子孙节点的迭代类型,包含全部的子孙节点,用于循环遍历

2、上行遍历方法

指自下而上的遍历方式

.parent

返回节点的父亲标签

.parents

返回先辈标签的迭代类型

需要注意,soup标签的父节点为不存在,在迭代遍历时应作相应处理

3、平行遍历方法

按照HTML文本顺序,对同一父节点下的若干子节点进行遍历

next_sibling

返回下一个平行节点标签

previous_sibling

返回上一个平行节点标签

next_siblings

返回后面所有平行节点标签的迭代器类型

previous_siblings

返回之前所有平行节点标签的迭代器类型

三、Beautiful Soup库的格式化输出

prettify() 方法

使用prettify方法可以将一个HTML文件增加换行符,使输出时页面可读性增加

四、bs4库的使用样例

以bugku web18为例检验学习成果

题目要求在两秒内计算一个极长的算式,很明显,不可能以手算然后更改请求头的方式提交,所以使用脚本

import requests
from bs4 import BeautifulSoup
s = requests.session() #使用session保持会话不变,表达式不变
r = s.request("GET","http://114.67.246.176:10454/")
#向服务器获取页面信息
r.encoding = "utf-8"
#调用bs4获取要计算的式子并进行处理
soup = BeautifulSoup(r.text,"html.parser")
a = eval(soup.div.string[0:-3])
datas = {"value":a}
#提交
print(s.post("http://114.67.246.176:10454/",data = datas).text)

运行,成功得到flag
在这里插入图片描述

注:本学习笔记总结自慕课北京理工大学嵩天老师的课程,感谢老师提供的优质课程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值