python爬虫和接口测试_Python接口测试学习笔记(七) - bs4爬虫
一. html解析
1. bs4介绍及安装
a. 官方介绍:
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.
b. 安装:
pip install beautifulsoup4
2. bs4对象的种类
Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种: Tag , NavigableString , BeautifulSoup , Comment:
Tag: Tag对象与XML或HTML原生文档中的tag相同, 如:
导航
, 这就是一个标签
NavigableString: 字符串常被包含在tag内.Beautiful Soup用 NavigableString类来包装tag中的字符串, 如: 导航
BeautifulSoup: 就是整个html对象
Comment: 注释对象, 如: , 它其实就是一个特殊NavigableString
importrequestsfrom bs4 importBeautifulSoup
r= requests.get("https://www.cnblogs.com/fayez/")#html解析是多种解析方式之一, 其他还有lxml 和 html5lib, 详情请查看官网
soup = BeautifulSoup(r.content, "html.parser")#Tag 对象(找到第一个符合的tag)
print(soup.h1)print(type(soup.h1))#soup.find_all("h1")找到所有的"h1"tag
print(soup.find_all("h1"))#NavigableString对象
print(soup.h1.string)print(type(soup.h1.string))#BeautifulSoup对象
print(type(soup))
3. 获取内容的方法等:
1. tag属性:
1. tag.attrs可以返回所有的属性, 返回内容为字典格式
2. 获取其中的某个一属性, 跟操作字典一样, 如: tag["href"]
3. 由于class属性一般可以为多个,中间空格隔开, 所有class属性获取的是一个list类型:[u'classes']
importrequestsfrom bs4 importBeautifulSoup
r= requests.get("https://cn.bing.com/")
soup= BeautifulSoup(r.content, "html.parser")#获取所有属性
print(soup.input.attrs)#获取对应属性的值
print(soup.input["title"])#class属性返回list
print(soup.input["class"])#获取class属性的每个内容
print(soup.input["class"][0])
2. get_text()
1. find_all查找的是一个list对象
2. get_text()获取tag标签下所有的文本
3. replace替换字符串里面的特殊字符
importrequestsfrom bs4 importBeautifulSoup
r= requests.get("https://www.cnblogs.com/fayez/")
soup= BeautifulSoup(r.content, "html.parser")#查找所有类名为"posttitle"的标签
articles = soup.find_all(class_="posttitle")for i inarticles:print(i.get_text().replace("\n", ""))
3. contents
1. find只查找一个(返回第一个)
2. Contents返回所有的子Tag(list)
importrequestsfrom bs4 importBeautifulSoup
r= requests.get("https://www.cnblogs.com/fayez/")
soup= BeautifulSoup(r.content, "html.parser")
articles= soup.find(id="rightcontent")print(articles.contents)
二. 爬取图片到本地(可下漫画~)
#coding:utf-8
importrequestsfrom bs4 importBeautifulSoupimportos
r= requests.get("http://699pic.com/sousuo-218808-13-1.html")
soup= BeautifulSoup(r.content,"html.parser")#查找所有 class="lazy" 的元素
images = soup.find_all(class_="lazy")
curPath= os.path.dirname(os.path.realpath(__file__))for i inimages:try:#获取元素中对应属性的值
jpg_url = i["data-original"]
title= i["title"]#请求各图片地址(比视频中多了个 “http:”)
im = requests.get("http:"+jpg_url)#写入图片
with open(title+".jpg","wb") as f:
f.write(im.content)exceptException as msg:print("msg")
三. 概念 & 方法 & 参数
0. 更具体请查看 bs4 中文官网
1. 父子节点:如果无法一次性找到一个 Tag, 那就先找他父节点,父节点找不到就找爷爷节点。
#coding:utf-8
importrequestsfrom bs4 importBeautifulSoup
r= requests.get("https://www.cnblogs.com/fayez/p")
soup= BeautifulSoup(r.content,"html.parser")
titles= soup.find_all(class_="postTitl2")for i intitles:#i 是父亲节点,a 是期望获取的节点
print(i.a.string)
2. find_all: find_all() 方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件
3. limit 参数:limit 参数限制返回结果的数量
soup.find_all("a", limit=2)
python爬虫和接口测试_Python接口测试学习笔记(七) - bs4爬虫相关推荐
- opencv python 直方图反向投影_python OpenCV学习笔记直方图反向投影的实现
本文介绍了python OpenCV学习笔记直方图反向投影的实现,分享给大家,具体如下: 它用于图像分割或寻找图像中感兴趣的对象.简单地说,它创建一个与我们的输入图像相同大小(但单通道)的图像,其中每 ...
- python分析鸢尾花数据_python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据...
但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...
- python中向量长度_Python线性代数学习笔记——什么是向量?实现我们自己的向量...
上一篇已经说明了为什么要学习线性代数? 下面我们正式开始学习 一切从向量开始 什么是向量,究竟为什么引⼊向量? 从研究一个数,变成了研究一组数,向量表示的就是一组数 学过中学物理都知道力,速度,加速度 ...
- python 去掉双引号_Python基础学习笔记(一)变量与数据类型
Python是一门易学的面向对象的程序设计语言,可以轻易地完成界面.文件.封装等高阶需求,可移植性好,有非常多功能强大的库与包,如Numpy(数值计算).SciPy(数学.科学与工程计算).Matpl ...
- python内建函数使用方法_python基础学习笔记(实用的内建函数和经典题目收集)...
说明:本手记大部分知识点摘自菜鸟教程,包括代码示例.(菜鸟教程的学习资源真心很好用,把它当查询工具书灰常给力) 1. 字符串方法中的string模块 maketrans ( ) 和translate( ...
- python获取键盘输入_Python 3 学习笔记之——键盘输入和读写文件
1. 键盘输入 Python提供了 input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘.input 可以接收一个 Python 表达式作为输入,并将运算结果返回. str = inp ...
- python空气质量指数计算_Python的学习笔记案例8--空气质量指数计算5.0
之前都是使用提前准备好的文件来获取数据,时效性很差. 为了更有效.更快地获取并利用网络信息并工作提高效率,出现了网络爬虫. 利用网络爬虫实时获取城市的空气质量指数. 什么是网络爬虫? 自动抓取互联网信 ...
- python向量点乘_Python线性代数学习笔记——向量的点乘与几何意义,实现向量的点乘操作...
好久没有写文章了,抱歉了,以后每天都会更新一篇的.... 向量的点乘,也就是两个向量相乘: 我们是不这么定义的,不是两个向量对应的坐标元素相乘: 两个向量"相乘",结果是⼀个数!, ...
- python的networkx 算法_Python NetworkX 学习笔记
导读热词 chapter1 快速开始 import networkx as nx from matplotlib import pyplot as plt G = nx.Graph() # creat ...
最新文章
- MySQL中 Order By 和 Limit 的排序问题
- R语言ggplot2可视化:使用R原生plot函数为指定曲线下面的区域着色、ggplot2可视化在曲线的特定下方添加分割线、ggplot2为指定曲线下面的区域着色
- 无需Get更多技能,快速打造一个可持久化的任务调度
- RocketMQ:NameServer路由管理源码分析
- Postgre约束详解
- RedrawWindow, UpdateWindow,InvalidateRect 用法
- loss函数之SoftMarginLoss
- 分红酒 - 蓝桥杯 - 已更新
- RHCE033内容摘要
- Excel如何快速提取红色字体文本
- 高斯勒让德数值积分公式
- 阿里云云计算ACP学习(六)---阿里云负载均衡服务SLB
- 微积分-指数函数求导
- 各个银行卡号正则表达式,银行卡信息获取方法
- 深入理解虚拟内存机制
- Android以太网架构源码
- C语言 推箱子游戏 地图编辑器(简单)
- vite+ts+vue3 知识点(定义全局函数和变量)
- python爬取大学生就业分析专科和本科的信息https://edu.jobui.com/major/(上)JSON的存储
- linux手动安装rsync_在Linux/Unix上安装rsync并通过示例的方式介绍使用rsync命令