一. 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爬虫相关推荐

  1. opencv python 直方图反向投影_python OpenCV学习笔记直方图反向投影的实现

    本文介绍了python OpenCV学习笔记直方图反向投影的实现,分享给大家,具体如下: 它用于图像分割或寻找图像中感兴趣的对象.简单地说,它创建一个与我们的输入图像相同大小(但单通道)的图像,其中每 ...

  2. python分析鸢尾花数据_python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据...

    但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...

  3. python中向量长度_Python线性代数学习笔记——什么是向量?实现我们自己的向量...

    上一篇已经说明了为什么要学习线性代数? 下面我们正式开始学习 一切从向量开始 什么是向量,究竟为什么引⼊向量? 从研究一个数,变成了研究一组数,向量表示的就是一组数 学过中学物理都知道力,速度,加速度 ...

  4. python 去掉双引号_Python基础学习笔记(一)变量与数据类型

    Python是一门易学的面向对象的程序设计语言,可以轻易地完成界面.文件.封装等高阶需求,可移植性好,有非常多功能强大的库与包,如Numpy(数值计算).SciPy(数学.科学与工程计算).Matpl ...

  5. python内建函数使用方法_python基础学习笔记(实用的内建函数和经典题目收集)...

    说明:本手记大部分知识点摘自菜鸟教程,包括代码示例.(菜鸟教程的学习资源真心很好用,把它当查询工具书灰常给力) 1. 字符串方法中的string模块 maketrans ( ) 和translate( ...

  6. python获取键盘输入_Python 3 学习笔记之——键盘输入和读写文件

    1. 键盘输入 Python提供了 input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘.input 可以接收一个 Python 表达式作为输入,并将运算结果返回. str = inp ...

  7. python空气质量指数计算_Python的学习笔记案例8--空气质量指数计算5.0

    之前都是使用提前准备好的文件来获取数据,时效性很差. 为了更有效.更快地获取并利用网络信息并工作提高效率,出现了网络爬虫. 利用网络爬虫实时获取城市的空气质量指数. 什么是网络爬虫? 自动抓取互联网信 ...

  8. python向量点乘_Python线性代数学习笔记——向量的点乘与几何意义,实现向量的点乘操作...

    好久没有写文章了,抱歉了,以后每天都会更新一篇的.... 向量的点乘,也就是两个向量相乘: 我们是不这么定义的,不是两个向量对应的坐标元素相乘: 两个向量"相乘",结果是⼀个数!, ...

  9. python的networkx 算法_Python NetworkX 学习笔记

    导读热词 chapter1 快速开始 import networkx as nx from matplotlib import pyplot as plt G = nx.Graph() # creat ...

最新文章

  1. MySQL中 Order By 和 Limit 的排序问题
  2. R语言ggplot2可视化:使用R原生plot函数为指定曲线下面的区域着色、ggplot2可视化在曲线的特定下方添加分割线、ggplot2为指定曲线下面的区域着色
  3. 无需Get更多技能,快速打造一个可持久化的任务调度
  4. RocketMQ:NameServer路由管理源码分析
  5. Postgre约束详解
  6. RedrawWindow, UpdateWindow,InvalidateRect 用法
  7. loss函数之SoftMarginLoss
  8. 分红酒 - 蓝桥杯 - 已更新
  9. RHCE033内容摘要
  10. Excel如何快速提取红色字体文本
  11. 高斯勒让德数值积分公式
  12. 阿里云云计算ACP学习(六)---阿里云负载均衡服务SLB
  13. 微积分-指数函数求导
  14. 各个银行卡号正则表达式,银行卡信息获取方法
  15. 深入理解虚拟内存机制
  16. Android以太网架构源码
  17. C语言 推箱子游戏 地图编辑器(简单)
  18. vite+ts+vue3 知识点(定义全局函数和变量)
  19. python爬取大学生就业分析专科和本科的信息https://edu.jobui.com/major/(上)JSON的存储
  20. linux手动安装rsync_在Linux/Unix上安装rsync并通过示例的方式介绍使用rsync命令

热门文章

  1. (附源码)php+mysql华立学院门户网站 毕业设计 290011
  2. 35_ue4进阶末日生存游戏开发[背包系统准备]
  3. for-forEach-stream三种遍历方法执行效率比较与选用思考
  4. 日语在线听力网站集合(强力推荐)
  5. Taro项目 实现一个在页面内自由拖拽的滑块,仿苹果手机的辅助按钮
  6. 【上图开放数据竞赛】中文期刊论文自动分类Baseline
  7. PacBio RS II测序仪特点
  8. HDU 1005 — Number Sequence
  9. Java枚举,如何通过code获取枚举?
  10. 总结MySQL模糊查询