建设门户网站的目的,郑东新区建设局网站,定制西服,网站优化推广培训目录
一.urllib导入
二.urllib爬取网页
三.Headers属性 1.使用build_opener()修改报头
2.使用add_header()添加报头
四.超时设置
五.get和post请求
1.get请求
2.post请求 urllib库和request库作用差不多#xff0c;但比较起来request库更加容易上手#xff0c;但该了…目录
一.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
opnerurllib.request.build_opener()
opner.addheaders[header]
#打开百度网页
urlliburllib.request.urlopen(https://www.baidu.com).read()#‘wb’以二进制格式打开文件
fileopen(baidu.html,wb)
file.write(urllib)
#关闭文件
file.close()
2.使用add_header()添加报头 add_header简单多了例如上面的代码可以改成如下
import urllib.requesturlhttps://www.baidu.com
requrllib.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)#打开百度网页
urlliburllib.request.urlopen(url).read()#‘wb’以二进制格式打开文件
fileopen(baidu.html,wb)
file.write(urllib)
#关闭文件
file.close() 四.超时设置 如果访问一个网页且长时间没有得到反应这个时候超时设置就会自动断开对网页的访问函数timeout #超时设置10秒
fileurllib.request.urlopen(https://www.baidu.com/,timeout10) 五.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?wdvalue)
2.post请求
post请求向服务器提交数据 对与post请求常常用在表单的提交实现的思路是在get请求中添加要post的参数所有要构建表单并用urllib.parse.urlencode对数据进行编码处理
例如post登录界面部分代码
#编码数据
postdataurllib.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产生主要是没有模拟浏览器访问或某些网址反爬虫技术高超