python爬虫入门<三>—HTTP协议请求实战分析

HTTP协议请求实战分析

标签(空格分隔): HTTP协议请求


前面介绍了HTTP协议以及模拟浏览器,现在介绍一下HTTP请求过程:

  • GET:通过url请求指定页面信息
  • DEAD:类似get,只不过返回的响应中没有具体的内容,用于获取报头
  • POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改
  • PUT:从客户端向服务器传送的数据取代指定的文档的内容。
  • DELETE: 请求服务器删除指定的页面
  • CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
  • OPTIONS:允许客户端查看服务器的性能。
  • TRACE:回显服务器收到的请求,主要用于测试或诊断
    其实,在我们使用过程中,用的做多的就是GET和POST这两种请求:

GET实战分析

首先,我们用百度来做一下,我们用百度搜索爬虫,得到的网址为:
此处输入图片的描述
我们把这段网址在这复制一下https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=62095104_2_oem_dg&wd=%E7%88%AC%E8%99%AB&oq=hello&rsv_pq=ce41e49300004e63&rsv_t=9d88yplFxHXzKoN2xiG1AhpDU%2BJd08MHnqW4jtitk5DKihUDVM%2BfzfjQStI%2FAX%2F8RyZ21dVnJbQ&rqlang=cn&rsv_enter=0&rsv_sug3=23&rsv_sug1=20&rsv_sug7=100&bs=hello我们对一这段网址进行分析一下,首先,www.baidu.com就不用说了吧,字段ie=utf-8很明显就是编码格式是utf-8,我复制过来这段编码有问题,所以以以截图为准,wd=爬虫就是刚才我们百度的内容,所以说,wd=检索字,所以,这段网址,我们可以吧这一段网址简化成:https://www.baidu.com/s?wd=爬虫,实验一下,果然可以;
接下来,我们用代码实现:

keywd = "爬虫"
url = "https://www.baidu.com/s?wd="+keywd
response = urllib.request.urlopen(url)
data = response.read()
file = open("C:\\Users\\Administrator\\Desktop\\data.html","wb")
file.write(data)
file.close()

这段代码出现错误,提示

UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 10-11: ordinal not in range(128)

由错误可知,代码出现的问题是:编码问题,但是这个问题,我们可以用urllib库中的quote来解决,
修改过得代码:

keywd = "爬虫"
key_code = urllib.request.quote(keywd)
url1= "http://www.baidu.com/s?wd="
url = url1+key_code
response = urllib.request.urlopen(url)
data = response.read()
file = open("C:\\Users\\Administrator\\Desktop\\3.html","wb")
file.write(data)
file.close()

检测正确
通过这个实例:我们来总结一下:
1.构建对应的URl地址,并且该地址有GET请求的字段名和字段内容等等,并满足要求的格式:“http://网址?字段名=关键字”
2.构建对应的request的对象,并打开对象
3.代开文件,写入文件

POST实战

在我们平时登录、注册的时候,通常用的是POST,具体实现方法大家自己去实现,思路也就是我们前面学的那样:模拟浏览器

猜你喜欢

转载自blog.csdn.net/Travelerwz/article/details/79771511
今日推荐