当前位置: 首页 > 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产生主要是没有模拟浏览器访问或某些网址反爬虫技术高超

http://www.lryc.cn/news/25417.html

相关文章:

  • 美团前端二面常考react面试题及答案
  • 环境搭建04-Ubuntu16.04更改conda,pip的镜像源
  • 【C++进阶】四、STL---set和map的介绍和使用
  • JavaSE学习进阶 day1_01 static关键字和静态代码块的使用
  • 苹果笔可以不买原装吗?开学必备性价比电容笔
  • 数据库连接与properties文件
  • Linux上的校验和验证
  • 杂记——14.git在idea上的使用及其实际开发介绍
  • 记一次Nodejs减低npm版本的踩坑日记
  • 【iOS】—— 初识RAC响应式编程
  • Java——面向对象
  • 电影《毒舌律师》观后感
  • 【活学活用掌握trap命令】
  • 计算机组成原理4小时速成6:输入输出系统,io设备与cpu的链接方式,控制方式,io设备,io接口,并行串行总线
  • MyBatis源码分析(三)SqlSession的执行主流程
  • 环境搭建01-Ubuntu16.04如何查看显卡信息及安装NVDIA显卡驱动
  • 内网渗透测试理论学习之第四篇内网渗透域的横向移动
  • 20 | k8s v1.20集群搭建master和node
  • 《商用密码应用与安全性评估》第一章密码基础知识1.1应用概念
  • 【博学谷学习记录】超强总结,用心分享丨人工智能 深度学习 神经网络基础知识点总结
  • Python+tkinter添加滚动条
  • 大V龚文祥造谣董明珠恋情被禁言
  • 深入浅出Reactjs
  • 《C++ Primer Plus》第18章:探讨 C++ 新标准(1)
  • PCB板漏孔、漏槽怎么办?看工程师避坑“SOP”
  • mysql数据库同步方案:springboot+集成cannal
  • oracle 19c 创建物化视图并测试logminer进行日志挖掘
  • 2.1 黑群晖驱动:10代u核显硬解驱动(解决掉IP、重启无法连接问题)
  • 二、CSS
  • 变分推断 (Variational Inference) 解析