python库--urllib

news2024/9/29 1:20:43

目录

一.urllib导入

二.urllib爬取网页

三.Headers属性

 1.使用build_opener()修改报头

2.使用add_header()添加报头

四.超时设置

五.get和post请求

1.get请求

2.post请求


urllib库和request库作用差不多,但比较起来request库更加容易上手,但该了解的还是要了解了解

一.urllib导入

        urllib库的安装不用多说,终端命令:pip install urllib,导入方法如下:

import urllib.request

二.urllib爬取网页

        urllib提供了一个打开访问网页的函数urlopen(),然后我们在本地创建一个保持该网页的文档,将该网页写入文档中,就实现了简简单单的网页源码的保存,例如保存百度的网页源码:

 

注意:保存文件可以用上面的方式,也可以用

urllib.request.urlretrieve(url,filename)

三.Headers属性

        网页为了防止被恶意采集进行了一些反爬虫设置,设置了headers就利用模拟浏览器去正常访问,多的我们就不赘叙,设置headers属性有两个方法:

 1.使用build_opener()修改报头

        自己浏览器headers不会看的先自己了解,不多说,看码

import urllib.request

#访问网页的header,每个人的不一样,这个是我的
header={
    'User_Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.41'
}
#修改header
opner=urllib.request.build_opener()
opner.addheaders=[header]
#打开百度网页
urllib=urllib.request.urlopen('https://www.baidu.com').read()

#‘wb’以二进制格式打开文件
file=open('baidu.html','wb')
file.write(urllib)
#关闭文件
file.close()

2.使用add_header()添加报头

        add_header简单多了,例如上面的代码可以改成如下:

import urllib.request

url="https://www.baidu.com"
req=urllib.request.Request(url)
#添加报头
req.add_header( 'User_Agent','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.41')

#打开百度网页
urllib=urllib.request.urlopen(url).read()

#‘wb’以二进制格式打开文件
file=open('baidu.html','wb')
file.write(urllib)
#关闭文件
file.close()

四.超时设置

        如果访问一个网页,且长时间没有得到反应,这个时候超时设置就会自动断开对网页的访问,函数timeout()

#超时设置10秒
file=urllib.request.urlopen("https://www.baidu.com/",timeout=10)

五.get和post请求

        HTTP请求协议有6种:GET  ,POST  ,PUT  ,DELETE  ,HEAD  ,OPTIONS, 这里不解释其他四种请求了

1.get请求

        GET请求:get请求会通过URL网址传递信息,可以直接在URL中写上要传递的信息,也可以由表单进行传递

在urllib中个get请求这样:注意请求的参数

urllib.request.Request("https://www.baidu.com/s?wd=value")

2.post请求

post请求:向服务器提交数据

        对与post请求常常用在表单的提交,实现的思路是在get请求中添加要post的参数,所有要构建表单并用urllib.parse.urlencode对数据进行编码处理

例如:post登录界面部分代码:

#编码数据
postdata=urllib.parse.urlencode({
    "username":"myun",
    "pass":"******"
})
#将数据传入get请求
urllib.request.Request(url,postdata)

注意:再随便提提异常处理urllib.error.URLError和urllib.error.HTTPError,前者是后者的父类

urllib.error.URLError产生的原因:

1.连接不上服务器        2.远程URL不存在        3.无网络        4.触发了HTTPError

HTTPError产生主要是没有模拟浏览器访问或某些网址反爬虫技术高超

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381514.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud学习笔记 - 分布式系统全局事务管理 - Seata1.5.2+Nacos+OpenFeign

1. Seata 是什么? 由于业务和技术的发展,单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证, 但是全…

【跟着ChatGPT学深度学习】ChatGPT带我学情感分析

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

5G+车联网按下加速键,这家企业已经走在行业前列

进入2023年,5G车联网进入了快速增长阶段,并且正在逐步替代4G的存量市场。 为了更好地满足5G车联网市场的需求,移远通信正式推出了符合3GPP Release 16标准的车规级5G NR模组AG59x系列。据了解,全新的产品在5G传输速度、低时延、高…

SpringBoot addResourceHandlers 代理静态资源无法访问 Java获取linux文件中文名乱码 Linux设置中文字符集

SpringBoot addResourceHandlers 代理静态资源无法访问 Java获取linux文件中文名乱码 linux设置中文字符集Windows中使用SpringBoot addResourceHandlers代理静态资源访问Linux中使用SpringBoot addResourceHandlers代理静态资源访问修改路径问题一度以为Linux不能用这种方式代…

概念解读稳定性保障

什么是稳定百度百科关于稳定的定义:“稳恒固定;没有变动。”很明显这里的“稳定”是相对的,通常会有参照物,例如 A 车和 B 车保持相同速度同方向行驶,达到相对平衡相对稳定的状态。那么软件质量的稳定是指什么呢&#…

区块链对于底层技术的助力和改造,导致了如此多的新技术、新模式的出现

现在,区块链就在经历这样一种状态。是的,我们现在看到的是,以人工智能为代表的诸多新技术的不断地成熟和落地,我们现在看到的是,以元宇宙为代表的诸多新模式的不断衍生和出现。但是,如果深度分析&#xff0…

对称锥规划:锥与对称锥

文章目录对称锥规划:锥与对称锥锥的几何形状常用的指向锥Nonnegative Orthant二阶锥半定锥对称锥对称锥的平方操作对称锥的谱分解对称锥的自身对偶性二阶锥规划SOCP参考文献对称锥规划:锥与对称锥 本文主要讲锥与对称锥的一些基本概念。 基础预备&…

C++回顾(四)—— 类的封装

4.1 面向对象编程介绍 4.1.1 什么是面向对象 面向将系统看成通过交互作用来完成特定功能的对象的集合。每个对象用自己的方法来管理数据。也就是说只有对象内部的代码能够操作对象内部的数据。 4.1.2 面向对象的特点 (1)抽象的作用 抽象是人们认识事…

【XXL-JOB】XXL-JOB的搭建和使用

【XXL-JOB】XXL-JOB的搭建和使用 文章目录【XXL-JOB】XXL-JOB的搭建和使用1. 任务调度1.1 实现任务调度1.1.1 多线程实现1.1.2 Timer实现1.1.3 ScheduledExecutor实现2. 分布式任务调度2.1 采用分布式的原因3. XXL-JOB3.1 XXL-JOB介绍3.2 执行流程4. 搭建XXL-JOB4.1 创建数据库…

Ep_操作系统面试题-操作系统的分类

答案 单体系统 整个操作系统是以程序集合来编写的,链接在一块形成一个二进制可执行程序,这种系统称为单体系统。 分层系统 每一层都使用下面的层来执行其功能。 微内核 微内核架构的内核只保留最基本的能力,把一些应用放到了用户空间 客户-…

BCN点击试剂1263166-90-0,endo BCN-OH,环丙烷环辛炔羟基

endo BCN-OH基础产品数据:CAS号:1263166-90-0中文名:环丙烷环辛炔甲醇,环丙烷环辛炔羟基英文名:endo BCN-OH 结构式(Structural):详细产品数据:Molecular formula&#x…

CVPR 2023 | 基础模型推动语义分割的弱增量学习

前言语义分割的弱增量学习(WILSS)目的是学习从廉价和广泛可用的图像级标签中分割出新的类别,但图像级别的标签不能提供定位每个片段的细节。为了解决该问题,本文提出了一个新颖且数据高效的框架(FMWISS)。该…

IM即时通讯开发实时消息的“时序性”与“一致性”

我们都知道,一个典型的分布式系统中,很多业务场景都需要考虑消息投递的时序,例如:IM中单聊消息投递:保证发送方发送顺序与接收方展现顺序一致;IM中群聊消息投递:保证所有接收方展现顺序一致&…

如何审计一个智能合约

智能合约审计用于整个 DeFi 生态系统,通过对协议代码的深入审查,可以帮助解决识别错误、低效代码以及这些问题。智能合约具有不可篡改的特点,这使得审计成为任何区块链项目安全流程的关键部分。 代码审计对任何应用程序都很重要,…

【ES】Elasticsearch核心基础概念:文档与索引

es的核心概念主要是:index(索引)、Document(文档)、Clusters(集群)、Node(节点)与实例,下面我们先来了解一下Document与Index。 RESTful APIs 在讲解Document与Index概念之前,我们先来了解一下RESTful APIs,因为下面讲解Documen…

Antd Form校验没有效果的问题

问题是这样的: 环境: antd4.x 现象: 如上页面 出现页面后直接点击按钮触发校验,不会有校验提示,页面没有任何反应假如只有其中任何一个,校验正常 比如,没有“模型编码”,只有“模…

变分推断 (Variational Inference) 解析

前言 如果你对这篇文章可感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。 变分推断 在贝叶斯方法中,针对含有隐变量的学习和推理,通常有两类方式,其一是马尔可…

Python爬虫:如何自动化下载网站图片

目录 Requests 访问页面 XPath 定位 JSON 对象 如何使用 XPath 自动下载百度图片 Selenium 库模拟浏览器 Requests 访问页面 Requests 是 Python HTTP 的客户端库,编写爬虫的时候都会用到,编写起来也很简单。它有两种访问方式:Get 和 P…

王道操作系统课代表 - 考研计算机 第五章 输入输出管理 究极精华总结笔记

本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对 操作系统 知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!! 关于对 “输入输出管理” 章节知识点总结的十分全面,涵括了《操作系统》课程里的…

基于.NET 7 + iView 的前后端分离的通用后台管理系统开源框架

更多开源项目请查看:一个专注推荐.Net开源项目的榜单 今天给大家推荐一套前后端分离通用后台管理系统开源框架。 项目简介 这是基于.Net 7 Vue.js开发的、前后端分离框架,前端UI框架采用iView,该项目只有基础功能模块,不包含具…