python-快速使用urllib爬取网页(4-GET)

来源:互联网 发布:nginx configure 编辑:程序博客网 时间:2024/05/21 19:21

客户端–消息传递(HTTP协议)–服务器端
HTTP协议请求分为六种类型
a、GET请求:GET请求通过URL网址传递信息,可以直接在URL中写上要传递的信息,也可以由表单进行传递,如果使用表单进行传递,表单中的信息会自动转为URL地址中的数据,通过URL地址传递。
b、POST请求:可以向服务器提交数据,比较主流和安全。比如在登录时,经常使用POST请求发送数据。
c、PUT请求请求服务器存储一个资源,通常要指定存储的位置。
d、DELETE请求:请求服务器删除一个资源
e、HEAD请求:请求获取对应的HTTP报头信息
f、OPTIONS请求:可以获得当前URL所支持的请求类型
除此之外,还有TRACE请求与CONNECT请求,TRACE请求用于测试诊断,这里不在提及。

下面实例讲解GET和POST请求

我们打开百度,查询Hello按下ENTER键,发现网址由
https://www.baidu.com/
变为了
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=Hello&rsv_pq=c699914b00052fcc&rsv_t=c93bxQToACUSgkjcCiKrD06bx7rqBlEcSH0Gf%2BiQ0J2hwZWab9rThB57Wdg&rqlang=cn&rsv_enter=1&rsv_sug3=3&rsv_sug1=2&rsv_sug7=100&rsv_sug2=0&inputT=1867&rsv_sug4=2526

我们看到上面标记的黑体字段,wd=Hello,即wd存储的就是用户检索的关键字
我们简化网址为
http://www.baidu.com/s?wd=Hello
将网址输入地址栏中,我们发现一样能查询出Hello的搜索结果(GET请求,通过网址查询

根据这个规律,我们可以构造GET请求,实现用爬虫自动的在百度查询关键字:

# coding=utf-8import urllib.requestkeywd = "Hello"url = "Http://www.baidu.com/s?wd=" + keywdreq = urllib.request.Request(url)data = urllib.request.urlopen(req).read()fhandle = open("D:/python3.5/4.html","wb")fhandle.write(data)fhandle.close()

如果我们要查询中文信息,则会出现错误,因为编码问题
之前第二节我们已经学习了编码解码,所以我们要执行以下

# coding=utf-8import urllib.requesturl = "Http://www.baidu.com/s?wd="key = "北京邮电大学"key_code = urllib.request.quote(key)url_all = url + key_codereq = urllib.request.Request(url_all)data = urllib.request.urlopen(req).read()fhandle = open("D:/python3.5/4.html","wb")fhandle.write(data)fhandle.close()

总结如下:GET请求
1、构造URL
2、以对应的URL为参数,构造Request对象
3、通过urlopen()打开构造的对象
4、后续处理

阅读全文
0 0
原创粉丝点击