当前位置: 首页 > news >正文

python3 爬虫相关学习9:BeautifulSoup 官方文档学习

目录

1 BeautifulSoup 官方文档

报错暂时保存

2 用bs 和 requests 打开 本地html的区别:代码里的一段html内容

2.1 代码和运行结果

2.2 用beautiful 打开 本地 html 文件

2.2.1 本地html文件

2.2.2 soup1=BeautifulSoup(html1,"lxml")

2.3 用requests打开 本地 html 文件

2.3.1 本地html文件

2.3.2 print(html1)

3 用bs 和 requests 打开 本地html的区别:一个独立的html文件

3.1 独立创建一个html文件

3.2 下面是新得代码和运行结果

3.3 用beautiful 打开 本地 html 文件

3.4 用 read() 打开 本地 html 文件

3.5 用requests打开 本地 html 文件

4  f.write(soup1.prettify()) 和 html 用 read()读出来 差别很大


1 BeautifulSoup 官方文档

Beautiful Soup: We called him Tortoise because he taught us.icon-default.png?t=N4P3https://www.crummy.com/software/BeautifulSoup/

 

Beautiful Soup 4.4.0 文档 — Beautiful Soup 4.2.0 中文 文档icon-default.png?t=N4P3https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/

Beautiful Soup 4.4.0 文档 — beautifulsoup 4.4.0q 文档icon-default.png?t=N4P3https://beautifulsoup.readthedocs.io/zh_CN/latest/

 

报错暂时保存

r""

OSError: [Errno 22] Invalid argument: 'E:\\work\\FangCloudV2\\personal_space\x02learn\\python3\\html0003.html'

 

    soup1=BeautifulSoup(open(html1,"html.parser"))
ValueError: invalid mode: 'html.parser'

 

   with open(path1 ,"a") as f
                              ^
SyntaxError: expected ':'
 

 

  •  soup1=BeautifulSoup(html1,"lxml")
  • lxml 是解析方式
  • 如果不写,默认也会采用 lxml的解析
  • 如果写成 soup1=BeautifulSoup(html1) 可以正常运行,但是会提醒

 AttributeError: 'str' object has no attribute 'text'

requests.exceptions.InvalidSchema: No connection adapters were found for '<html><head><title>The Dormouse\'s story</title></head>\n<body>\n<p class="title"><b>The Dormouse\'s story</b></p>\n\n<p class="story">Once upon a time there were three little sisters; and their names were\n<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,\n<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and\n<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;\nand they lived at the bottom of a well.</p>\n\n<p class="story">...</p>\n'

2 用bs 和 requests 打开 本地html的区别:代码里的一段html内容

2.1 代码和运行结果

#E:\work\FangCloudV2\personal_space\2learn\python3\py0003.txtimport requests
from bs4 import BeautifulSoup#html文件内容
html1 = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p><p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p><p class="story">...</p>
"""#"测试bs4"
print ("测试bs4")
soup1=BeautifulSoup(html1,"lxml")
print (soup1.prettify())#"对比测试requests"
print ("对比测试requests")
#res=requests.get(html1)
res=html1
#print (res.text)
print (res)

 

 

2.2 用beautiful 打开 本地 html 文件

#"测试bs4"

html1="""  ... """
print ("测试bs4")
soup1=BeautifulSoup(html1,"lxml")
print (soup1.prettify())

2.2.1 本地html文件

  • 这次的本地html 文件是写在 python 脚本内容一起的 一段文本
  • html1=""" ...  """

2.2.2 soup1=BeautifulSoup(html1,"lxml")

  • 正确写法
  • soup1=BeautifulSoup(html1,"lxml")
  • lxml 是解析方式
  • 如果不写,默认也会采用 lxml的解析
  • 如果写成 soup1=BeautifulSoup(html1) 可以正常运行,但是会提醒

 

2.3 用requests打开 本地 html 文件

#"对比测试requests"
print ("对比测试requests")
#res=requests.get(html1)
res=html1
#print (res.text)
print (res)

2.3.1 本地html文件

  • 这次的本地html 文件是写在 python 脚本内容一起的 一段文本
  • html1=""" ...  """
  • 本地文件 html 已经是一段 脚本内的文本  """  ..."""

2.3.2 print(html1)

本地文件 html 已经是一段 脚本内的文本  """  ..."""

  • 正确写法1 
  • res=html1
  • print (res)

  • 正确写法2
  • print (html1)

  • 错误写法1
  • #print (res.text)
  • 只有html作为网页结构的时候,可以用  html.text 取到其中的string  内容
  • 所以 
  • requests.get(url) 
  • requests.get(url).text

requests.exceptions.InvalidSchema: No connection adapters were found for '<html><head><title>The Dormouse\'s story</title></head>\n<body>\n<p class="title"><b>The Dormouse\'s story</b></p>\n\n<p class="story">Once upon a time there were three little sisters; and their names were\n<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,\n<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and\n<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;\nand they lived at the bottom of a well.</p>\n\n<p class="story">...</p>\n'

 

  • 错误写法2
  • #res=requests.get(html1)
  • 一样的原因
  • 因为这里的html1 不是网页,而已经是网页的内容string了!

AttributeError: 'str' object has no attribute 'text'

 

3 用bs 和 requests 打开 本地html的区别:一个独立的html文件

3.1 独立创建一个html文件

 

3.2 下面是新得代码和运行结果

代码

#E:\work\FangCloudV2\personal_space\2learn\python3\py0003-1.txt
#E:\work\FangCloudV2\personal_space\2learn\python3\html0003.htmlimport requests
import os
import time
from bs4 import BeautifulSouppath1=r"E:\work\FangCloudV2\personal_space\2learn\python3\html0003.html"
soup1=BeautifulSoup(open(path1))
print ("测试bs4")
print (soup1.prettify())path2=r'E:\work\FangCloudV2\personal_space\2learn\python3\html0003-1.html'
if not os.path.exists(path2):              os.mkdir(path2) with open(path2 ,"a") as f:f.write("测试bs4")f.write(soup1.prettify())print ("对比测试requests")
with open(path1 ,"r") as f:res=f.read()
print (res)with open(path2 ,"a") as f:f.write("对比测试requests")f.write(res)"""
#地址,路径,前都记得加 r, 因为string 内部包含\/等转义符,rawdata安全
url1="E:\work\FangCloudV2\personal_space\2learn\python3\html0003.html"
url1=r"E:\work\FangCloudV2\personal_space\2learn\python3\html0003.html"
res=requests.get(url1)
#本地地址不能像网址 url这样用,用的\/不同,即使用 raw r 也不行. 可以用转格式函数吗?
#https://www.baidu.com/
"""

运行结果

 

 

另存为的文件内容

 

3.3 用beautiful 打开 本地 html 文件

path1=r"E:\work\FangCloudV2\personal_space\2learn\python3\html0003.html"
soup1=BeautifulSoup(open(path1))
print ("测试bs4")
print (soup1.prettify())

path2=r'E:\work\FangCloudV2\personal_space\2learn\python3\html0003-1.html'
if not os.path.exists(path2):              
    os.mkdir(path2) 

with open(path2 ,"a") as f:
    f.write("测试bs4")
    f.write(soup1.prettify())

最大的差别

  • soup1=BeautifulSoup(open(path1))
  • soup1.prettify() 输出格式化得内容

 

3.4 用 read() 打开 本地 html 文件

  • 和  read()读出来的内容 (应该和 requests.get()得出来得内容一样)

print ("对比测试requests")
with open(path1 ,"r") as f:
    res=f.read()
print (res)

with open(path2 ,"a") as f:
    f.write("对比测试requests")
    f.write(res)
 

 

3.5 用requests打开 本地 html 文件

  • 没试过
  • 这种本体html没法试把?

4  f.write(soup1.prettify()) 和 html 用 read()读出来 差别很大

和  read()读出来的内容 (应该和 requests.get()得出来得内容一样)

相关文章:

python3 爬虫相关学习9:BeautifulSoup 官方文档学习

目录 1 BeautifulSoup 官方文档 报错暂时保存 2 用bs 和 requests 打开 本地html的区别&#xff1a;代码里的一段html内容 2.1 代码和运行结果 2.2 用beautiful 打开 本地 html 文件 2.2.1 本地html文件 2.2.2 soup1BeautifulSoup(html1,"lxml") 2.3 用reque…...

物联网Lora模块从入门到精通(九)Flash的读取与存储--结题

一、前言 这将是"物联网Lora模块从入门到精通"系列的最后一篇文章&#xff0c;相信各位同僚通过前面八篇文章的分享已经极好的掌握了Lora模块的编程&#xff0c;本文的Flash的读取与存储将是Lora模块开发的最后一块&#xff0c;感谢大家的陪伴与支持&#xff01; 希望…...

STM32MP157_PRO开发板的第一个驱动程序

文章目录 目的&#xff1a;为什么编译驱动程序之前要先编译内核&#xff1f;编译内核编译设备树编译安装内核模块编译内核模块安装内核模块到 Ubuntu 的NFS目录下备用 安装内核和模块到开发板上编译 led 驱动在开发板安装驱动模块下载驱动程序安装驱动模块 目的&#xff1a; 在…...

你“被”全链路了么?全链路压测实践之理论

要说当下研发领域最热门的几个词&#xff0c;全链路压测 肯定跑不了。最近的几次大会上&#xff0c;也有不少关于全链路的议题。之前有朋友在面试过程中也有被问到了什么是全链路压测&#xff0c;如何有效的开展全链路压测。今天我们就来聊聊全链路压测&#xff0c;但本文不会涉…...

基于Tensorflow+SDD+Python人脸口罩识别系统(深度学习)含全部工程源码及模型+视频演示+图片数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境Anaconda 环境搭建 模块实现1. 数据预处理2. 模型构建及算法实现3. 模型生成 系统测试1. 训练准确率2. 运行结果 工程源代码下载其它资料下载 前言 在当今全球范围内&#xff0c;新冠疫情对我们的生活方式带来了…...

abc200 D 鸽巢原理

题意&#xff1a;https://www.luogu.com.cn/problem/AT_abc200_d 思路&#xff1a;对于一个序列最多有多少个模数&#xff0c;其实就是子序列个数&#xff0c;所以当子序列个数超过200是那么答案一定存在&#xff0c;那么我们就可以直接枚举了&#xff0c;所以我们直接枚举前八…...

QT day1 (图形界面设计)

要求&#xff1a; 功能函数模块 #include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {qDebug("%s","hello world");//qDebug() << &qu…...

JS逆向系列之猿人学爬虫第9题-动态cookie2

文章目录 目标参数流程分析js代码Python调用测试目标 https://match.yuanrenxue.cn/match/9参数流程分析 二次请求cookie携带m 第一次请求响应内容格式化之后是这样的: < body > < script src = "/static/match/safety/match9/udc.js" > <...

Java ~ Reference ~ FinalizerHistogram【总结】

前言 文章 相关系列&#xff1a;《Java ~ Reference【目录】》&#xff08;持续更新&#xff09;相关系列&#xff1a;《Java ~ Reference ~ FinalizerHistogram【源码】》&#xff08;学习过程/多有漏误/仅作参考/不再更新&#xff09;相关系列&#xff1a;《Java ~ Referenc…...

【MySQL】一文带你了解SQL

&#x1f3ac; 博客主页&#xff1a;博主链接 &#x1f3a5; 本文由 M malloc 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;LeetCode刷题集&#xff01; &#x1f3c5; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指…...

python基础学习3【NumPy矩阵与通用函数【矩阵相乘+平方+广播机制+转置】+ save、load、sort、repeat、unique、鸢尾花1】

NumPy矩阵与通用函数 a np.mat([[1,2],[3,4]])#生成矩阵b np.matrix([[1,7],[6,4]])np.bmat("a b") 矩阵的运算 矩阵特有属性&#xff1a; 属性 说明 T自身转置H共轭转置I逆矩阵A自身数据的二维数据视图 例如&#xff1a; np.matrix(a).T 矩阵相乘&#xff1a;…...

【Spring学习之更简单的读取和存储Bean对象】教会你使用五大类注解和方法注解去存储 Bean 对象

前言&#xff1a; &#x1f49e;&#x1f49e;今天我们依然是学习Spring&#xff0c;这里我们会更加了解Spring的知识&#xff0c;知道Spring是怎么更加简单的读取和存储Bean对象的。也会让大家对Spring更加了解。 &#x1f49f;&#x1f49f;前路漫漫&#xff0c;希望大家坚持…...

微客云原生淘宝客APP小程序系统如何定制

淘宝是中国最大的电商网站&#xff0c;而淘宝的火热&#xff0c;也兴起了一个全新的行业&#xff0c;淘宝客。就是帮助淘宝商家推广商品的一种职业。目前淘宝每年有百分之10的销售业绩都是通过淘宝客贡献的&#xff0c;所以说淘宝客的市场越来越大。但是淘宝客要推广自己的产品…...

QT CTK插件开发(六) 多对一插件

CTK在软件的开发过程中可以很好的降低复杂性、使用 CTK Plugin Framework 提供统一的框架来进行开发增加了复用性 将同一功能打包可以提供多个应用程序使用避免重复性工作、可以进行版本控制提供了良好的版本更新迭代需求、并且支持动态热拔插 动态更新、开发更加简单快捷 方便…...

【Spring Boot整合MyBatis教程】

Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。通过这种方式&#xff0c;Spring Boot致力于在蓬勃发展的快速应用开发…...

ThinkPHP3.2.3通过局域网手机访问项目

折腾一上午&#xff0c; 试了nginx&#xff0c; 试了修改Apache的httpd.conf 试了关闭代理 试了手动配置网络 试了关闭防火墙 试了添加防火墙入站出站规则 问了五个ChatGPT 都没解决。 记录一下 wampserver3.0.4 Apache2.4.18 PHP 5.6.19 MySQL 5.7.11 所有服务启…...

2306C++虚继承

构 B{无序映<串,串>列;整 大小0;空 f(){大小;} }; //虚继承其实不错,但是占位置,占空间.构 C:虚 公 B{空 g(){} };构 D:虚 公 C{空 h(){} }; 构 S{}; 构 T{}; //元<类 T>构 E:虚 公 D{}; 构 E:虚 公 D{};空 主(){//E<S>e;e.f();打印(e.大小);//E<T>m;m…...

使用oracle遇到问题笔记

一、oracle还原到不同版本的oracle数据库报错和解决办法 产生&#xff1a;执行imp导入dmp备份文件时报错 错误内容&#xff1a;导入失败提示&#xff1a;“不是有效的导出文件, 标头验证失败”解决方法 解决办法&#xff1a;http://t.csdn.cn/pJyhc...

我和老刘又被搞惨了

前两天在调试PHY的时候遇到了一堆问题&#xff0c;老刘都不耐其烦的搞定了&#xff0c;这次我们开始调试音频部分&#xff0c;音频部分很简单&#xff0c;无非就是录音&#xff0c;要是能把录音的音频拿到了&#xff0c;那就万事大吉了。老刘也是信心满满&#xff0c;老刘对我说…...

DDD--基本概念

最近项目组一直在推DDD领域驱动设计&#xff0c;现就一些个人理解分享如下。 DDD&#xff08;领域驱动设计&#xff09;是一种软件开发方法论&#xff0c;旨在解决复杂业务场景下的软件设计与开发问题。以下是DDD的基本概念&#xff1a; 领域&#xff08;Domain&#xff09;&…...

chatgpt赋能python:Python多行注释

Python 多行注释 在 Python 中&#xff0c;我们经常需要写注释来解释代码或者用于调试。Python 的注释分为单行注释和多行注释&#xff0c;本文主要介绍 Python 中如何多行注释。 单行注释 在 Python 中&#xff0c;单行注释以符号 # 开头&#xff0c;可以写在代码的任何位置…...

JSP详细基础教学

目录 前言 环境设置 创建JSP文件 编写基本的JSP代码 部署和运行JSP页面 基础语法 前言 JSP&#xff08;JavaServer Pages&#xff09;是一种用于开发动态网页的Java技术。它允许将Java代码嵌入HTML页面中&#xff0c;以便在服务器端生成动态内容。在本次教程中&#xff…...

mysql修改登录用户的密码

文章目录 mysql5.7即mysql7.0 的修改方式mysql5.8即mysql8.0的修改方式如果修改完密码&#xff0c;发现旧密码和新密码都登录不进来怎么办&#xff1f;发现设置密码老报错 mysql5.7即mysql7.0 的修改方式 1.如果是使用docker里装的mysql 首先使用 [rootlocalhost /]# docker p…...

SNAT和DNAT

SNAT和DNAT 一、SNAT的策略及应用&#xff1a; 1.SNAT&#xff1a; &#xff08;1&#xff09;定义&#xff1a;又称源地址转换。源地址转换是内网地址向外访问时&#xff0c;发起访问的内网ip地址转换为指定的ip地址&#xff08;可指定具体的服务以及相应的端口或端口范围&…...

好程序员:月薪2万程序员的简历,原来长这个样子!

6月份现在正是招聘季节&#xff0c;不少同学java岗位投递不少&#xff0c;但回复不多&#xff0c;根本原因可能是java面试简历不够吸引人。 你的java简历不会写&#xff1f;看看别人就知道咋写了&#xff0c;这里给大家拆解一份好程序员月薪2万的java简历。 java自我评价模块&a…...

STM32之FreeRTOS

目录 FreeRTOS 介绍 什么是 FreeRTOS &#xff1f; 为什么选择 FreeRTOS ? FreeRTOS 资料与源码下载 祼机开发与 FreeRTOS 祼机开发&#xff1a; FreeRTOS&#xff1a; FreeRTOS 实现多任务的原理 二、移植 FreeRTOS 手动移植 使用CubeMX快速移植 快速移植流程…...

有趣的图(二)(56)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 和猫妹学Python&#xff0c;一起趣味学编程。 今日主题 咱们书接上回&#xff0c;上次学了图的基本概念&#xff0c;你都学会了吗&#xff1f; 咱们今天要学习内容如下&a…...

Linux之环境变量

目录 Linux之环境变量 分类 环境变量 定义 设置环境变量 设置环境变量&#xff08;永久&#xff09; 用户环境变量配置所在文件&#xff1a; 全局环境变量配置所在文件&#xff1a; 显示与取消环境变量 通过echo或printf打印环境变量 通过env或set显示默认的环境变量 用 …...

python带你制作自动点赞小程序,让我看看谁还在呆呆的手动点赞

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 知识点: 动态数据抓包 requests发送请求 开发环境: 代码所使用软件工具&#xff1a; python 3.8 >>>>>> 运行代码 pycharm 2022.3 >>>>>> 辅助敲代码 需下载的第三方模块&a…...

shell脚本编写辅助命令

目录 一、echo 命令 二、字符串相关操作 1.截取字符串 2.获取字符串长度 3.字符串追加字符 4.从开头或结尾删除字符串指定格式内容 三、随机数 1.使用 $RANDOM 2.指定RANDOM变量的范围 &#xff08;1&#xff09;从0开始的范围 &#xff08;2&#xff09;从指定数始…...