欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-03 20:06:27
...

客户端–消息传递(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-8
import urllib.request

keywd = "Hello"
url = "Http://www.baidu.com/s?wd=" + keywd

req = 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-8
import urllib.request

url = "Http://www.baidu.com/s?wd="
key = "北京邮电大学"
key_code = urllib.request.quote(key)
url_all = url + key_code

req = 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、后续处理

相关标签: python get 爬虫