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

python库--urllib

目录

一.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.requesturl="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产生主要是没有模拟浏览器访问或某些网址反爬虫技术高超

相关文章:

python库--urllib

目录 一.urllib导入 二.urllib爬取网页 三.Headers属性 1.使用build_opener()修改报头 2.使用add_header()添加报头 四.超时设置 五.get和post请求 1.get请求 2.post请求 urllib库和request库作用差不多,但比较起来request库更加容易上手,但该了…...

美团前端二面常考react面试题及答案

什么原因会促使你脱离 create-react-app 的依赖 当你想去配置 webpack 或 babel presets。 React 16中新生命周期有哪些 关于 React16 开始应用的新生命周期: 可以看出,React16 自上而下地对生命周期做了另一种维度的解读: Render 阶段&a…...

环境搭建04-Ubuntu16.04更改conda,pip的镜像源

我常用的pipy国内镜像源: https://pypi.tuna.tsinghua.edu.cn/simple # 清华 http://mirrors.aliyun.com/pypi/simple/ # 阿里云 https://pypi.mirrors.ustc.edu.cn/simple/ #中国科技大学1、将conda的镜像源修改为国内的镜像源 先查看conda安装的信息…...

【C++进阶】四、STL---set和map的介绍和使用

目录 一、关联式容器 二、键值对 三、树形结构的关联式容器 四、set的介绍及使用 4.1 set的介绍 4.2 set的使用 五、multiset的介绍及使用 六、map的介绍和使用 6.1 map的介绍 6.2 map的使用 七、multimap的介绍和使用 一、关联式容器 前面已经接触过 STL 中的部分…...

JavaSE学习进阶 day1_01 static关键字和静态代码块的使用

好的现在我们进入进阶部分的学习,看一张版图: 前面我们已经学习完基础班的内容了,现在我们已经来到了第二板块——基础进阶,这部分内容就不是那么容易了。学完第二板块,慢慢就在向java程序员靠拢了。 面向对象进阶部分…...

苹果笔可以不买原装吗?开学必备性价比电容笔

在当今的时代,电容笔日益普及,而且相关的功能也逐渐完善。因此,在使用过程中,怎样挑选一款性价比比较高的电容笔成为大家关心的焦点。随着电容笔的普及,更好更便宜的电容笔成为了一种趋势。那么,哪个品牌的…...

数据库连接与properties文件

管理properties数据库&#xff1a; 现在pom文件中加入Druid的坐标&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version></dependency>配置文件中添加相应的数据&…...

Linux上的校验和验证

校验和&#xff08;checksum&#xff09;程序用来从文件中生成相对较小的唯一密钥。我们可以重新计算该密钥&#xff0c;用以检查文件是否发生改变。修改文件可能是有意为之&#xff08;添加新用户会改变密码文件&#xff09;&#xff0c;也可能是无意而为&#xff08;从CD-ROM…...

杂记——14.git在idea上的使用及其实际开发介绍

这篇文章我们来讲一下git在idea上的使用&#xff0c;以及在实际开发过程中各个分支的使用及其具体的流程 目录 1.git在idea上的使用 1.1 idea上的git提交 1.2 idea上的分支切换 2.git在实际运用时的分支及其流程 2.1分支介绍 2.2具体流程 3.小结 1.git在idea上的使用 …...

记一次Nodejs减低npm版本的踩坑日记

使用了npm install -g npm6.4.1指令之后&#xff0c;把npm版本减低了&#xff0c;让后悲催的就来了。 由于npm 6.4.1 已经过时&#xff0c;导致运行npm时出现 npm does not support Node.js v18.14.2 版本不兼容问题 升级npm版本&#xff0c;npm install -g npmlatest 没用还是…...

【iOS】—— 初识RAC响应式编程

RAC&#xff08;ReactiveCocoa&#xff09; 文章目录RAC&#xff08;ReactiveCocoa&#xff09;响应式编程和函数式编程的区别函数式编程响应式编程响应式编程的优点RAC操作1.利用button点击实现点击事件和传值2.RACSignal用法RACSignal总结&#xff1a;3.对于label的TapGestur…...

Java——面向对象

目录 前言 一、什么是面向对象&#xff1f; 面向过程 & 面向对象 面向对象 二、回顾方法的定义和调用 方法的定义 方法的调用 三、类与对象的创建 类和对象的关系 创建与初始化对象 四、构造器详解 五、创建对象内存分析 六、封装详解 七、什么是继承&#x…...

电影《毒舌律师》观后感

上周看了《毒蛇律师》这部电影&#xff0c;讲述一位’大律师’在法庭为己方辩护&#xff0c;最终赢得辩护的故事。 &#xff08;1&#xff09;人之常情 说起法律相关&#xff0c;不禁会让人联想到讲法律相关知识的罗翔老师&#xff0c;平时也会看他相关视频&#xff0c;无论是亲…...

【活学活用掌握trap命令】

trap 命令用于指定在接收到信号后将要采取的动作&#xff0c;常见的用途是在脚本程序被中断时完成清理工作。当 shell 接收到 sigspec 指定的信号时&#xff0c; arg 参数(通常是执行命令)会被读取&#xff0c;并被执行。 1. 命令介绍 开始掌握基本的使用方式和方法 [1] 语法…...

计算机组成原理4小时速成6:输入输出系统,io设备与cpu的链接方式,控制方式,io设备,io接口,并行串行总线

计算机组成原理4小时速成6&#xff1a;输入输出系统&#xff0c;io设备与cpu的链接方式&#xff0c;控制方式&#xff0c;io设备&#xff0c;io接口&#xff0c;并行串行总线 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c…...

MyBatis源码分析(三)SqlSession的执行主流程

文章目录一、熟悉主要接口二、SqlSession的获取1、通过数据源获取SqlSession三、Mapper的获取与代理1、从SqlSession获取Mapper2、执行Mapper方法前准备逻辑3、SqlCommand的创建4、构造MethodSignature四、执行Mapper的核心方法1、执行Mapper的方法逻辑五、简单SELECT处理过程1…...

环境搭建01-Ubuntu16.04如何查看显卡信息及安装NVDIA显卡驱动

1. 查看显卡型号、驱动 ubuntu-drivers devices2. 安装NVIDIA显卡驱动 &#xff08;1&#xff09;验证是否禁用nouveau lsmod | grep nouveau若有输出&#xff0c;没有禁用&#xff0c;进行以下操作禁用。 sudo gedit /etc/modprobe.d/blacklist.conf在文件末尾中添加两条&…...

内网渗透测试理论学习之第四篇内网渗透域的横向移动

文章目录一、IPC二、HashDump三、PTH四、PTT五、PsExec六、WMI七、DCOM八、SPN九、Exchange在内网中&#xff0c;从一台主机移动到另外一台主机&#xff0c;可以采取的方式通常有文件共享、计划任务、远程连接工具、客户端等。 一、IPC IPC&#xff08;Internet Process Conn…...

20 | k8s v1.20集群搭建master和node

1 单节点master 1.1 服务器整体规划 1.2 单Master架构图 1.3 初始化配置 1.3.1 关闭防火墙 systemctl stop firewalld systemctl disable firewalld1.3.2 关闭selinux sed -i s/enforcing/disabled/ /etc/selinux/config # 永久 setenforce 0 # 临时 1.3.3 关闭swap …...

《商用密码应用与安全性评估》第一章密码基础知识1.1应用概念

密码的概念与作用 概念 密码&#xff1a;采用特定变换的方法对信息进行加密保护、安全认证的技术、产品和服务。 密码技术&#xff1a;密码编码、实现、协议、安全防护、分析破译、以及密钥产生、分发、传递、使 用、销毁等技术。 密码技术核心&#xff1a;密码算法…...

FPG财盛国际:投资者教育生态的全面布局

FPG财盛国际&#xff1a;投资者教育生态的全面布局金融服务行业的复杂性决定了平台需要在多个维度上同时具备较高的水准。FPG财盛国际经过多年的发展&#xff0c;已经在合规、技术、服务、教育等方面形成了一套相互支撑的体系。本文从评测视角出发&#xff0c;对其综合实力进行…...

对比直接使用官方API体验Taotoken在接入便捷性上的不同

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比直接使用官方API体验Taotoken在接入便捷性上的不同 1. 从多平台到单一入口的体验转变 在开发需要集成多种大语言模型的应用时…...

im2col算法实现:从原理到代码的逐行剖析

1. im2col算法原理揭秘 想象你正在整理一副扑克牌&#xff0c;需要把相邻的几张牌快速组合起来。im2col算法的核心思想与此类似——它将图像中相邻的像素区域重新排列成矩阵的列&#xff0c;从而将卷积运算转化为高效的矩阵乘法。这个"image to column"的转换过程&am…...

簧片继电器可靠性设计与关键技术解析

1. Reed Relay可靠性设计的关键技术解析簧片继电器&#xff08;Reed Relay&#xff09;作为电子系统中的关键切换元件&#xff0c;其可靠性直接影响整个设备的长期稳定性。与传统电磁继电器相比&#xff0c;簧片继电器具有独特的结构优势和技术特点。本文将深入剖析提升簧片继电…...

AI Agent变现难题与破局之道:小白程序员必备收藏,2026年蓝海掘金指南!

文章深入分析了当前AI Agent行业的冰火两重天现象&#xff0c;揭示了技术不成熟、伪需求泛滥、基础设施不完善等六大核心底层逻辑导致变现困难。同时&#xff0c;文章指出了电商全链路、企业办公自动化、本地生活商家、开发者垂直、垂类定制化等五大变现蓝海赛道&#xff0c;并…...

企业级应用awesome-stock-resources:商业项目合规使用终极指南

企业级应用awesome-stock-resources&#xff1a;商业项目合规使用终极指南 【免费下载链接】awesome-stock-resources :city_sunrise: A collection of links for free stock photography, video and Illustration websites 项目地址: https://gitcode.com/gh_mirrors/aw/awe…...

如何彻底解决JavaScript浮点数精度问题:decimal.js完整指南

如何彻底解决JavaScript浮点数精度问题&#xff1a;decimal.js完整指南 【免费下载链接】decimal.js An arbitrary-precision Decimal type for JavaScript 项目地址: https://gitcode.com/gh_mirrors/de/decimal.js 你是否曾经遇到过JavaScript中0.1 0.2 ≠ 0.3的尴尬…...

如何高效使用Windows键盘记录工具:开源监控解决方案

如何高效使用Windows键盘记录工具&#xff1a;开源监控解决方案 【免费下载链接】keylogger Keylogger for Windows. 项目地址: https://gitcode.com/gh_mirrors/keylogg/keylogger Windows键盘记录工具Keylogger for Windows是一款专为系统管理员和安全研究人员设计的开…...

Realme Q3 5G刷Pixel Experience GSI保姆级教程(附问题修复与救砖指南)

Realme Q3 5G刷入Pixel Experience GSI全流程实战手册 在ColorOS与类原生Android之间&#xff0c;总有一群追求极简体验的玩家。Realme Q3 5G作为一款性价比突出的设备&#xff0c;其官方系统预装的应用和服务未必符合所有用户的期待。本文将带你完整走过从解锁到问题修复的全过…...

架构范式转移:DeepSeek-Coder-V2如何重构企业级代码智能的ROI模型

架构范式转移&#xff1a;DeepSeek-Coder-V2如何重构企业级代码智能的ROI模型 【免费下载链接】DeepSeek-Coder-V2 DeepSeek-Coder-V2: Breaking the Barrier of Closed-Source Models in Code Intelligence 项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-Code…...