python-快速使用urllib爬取网页(4-GET)
客户端–消息传递(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-快速使用urllib爬取网页(4-GET)
-
python-快速使用urllib爬取网页(8-URLError)
-
python-快速使用urllib爬取网页(7-DebugLog)
-
python-快速使用urllib爬取网页(2-Headers属性)
-
Python使用urllib,urllib3,requests库爬取网页
-
01精通Python网络爬虫——快速使用Urllib爬取网页
-
python-快速使用urllib爬取网页(1)
-
python-快速使用urllib爬取网页(3-超时异常)
-
Python爬虫学习之路(一)—— 使用Urllib爬取网页
-
01Python爬虫---快速使用Urllib爬取网页