urllib2默认支持HTTP/HTTPS的GET和POST方法
2018-09-14 16:12
267 查看
urllib.urlencode()
urllib和urllib2都是接受URL请求的相关模块,但是提供了不同的功能。两个最显著的不同如下:
1.urllib仅可以接受URL,不能创建设置headers的Request实例;
2.但是urllib提供urlencode方法用来GET查询字符串的产生,而urllib2则没有。(这是urllib和urllib2经常一起使用的主要原因)
3.编码同作使用urllib的urlencode()函数,帮我们讲key:value这样的键值对转换成"key=value"这样的字符串,解码工作可以使用urllib的unquote()函数。(注意,不是urllib2.urlencode())
注意:举例是用3.6版本,如果是urllib,我们就要用urllib.parse。
举例一:
举例二:
爬取贴吧。
import urllib.request import urllib.parse def loadPage(url,filename): """ 作用:根据url发送请求,获取服务器响应文件 url:需要爬取的url地址 filename:处理的文件名 :return: """ print("正在下载"+filename) headers = {"User-Agent" : "Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.9.168 Version/11.50"} request=urllib.request.Request(fullurl,headers=headers) return urllib.request.urlopen(request).read() def writePage(html,filename): """ 作用:将html内容写入到本地 html:服务器响应文件内容 :param html: :return: """ print("正在保存"+filename) #文件写入 with open(filename,"w") as f: f.write(str(html)) print("-"*30) def tiebaSpider(url,beginPage,endPage): """ 作用:贴吧爬虫调度器,负责组合处理每个页面的url url:贴吧url的前部分 beginPage:起始页 endPage:结束页 :return: """ for page in range(beginPage,endPage+1): pn = (page-1)*50 filename="第" + str (page) + "页.html" fullurl = url + "&pn=" + str (pn) #print(fullurl) html=loadPage(fullurl,filename) #print(html) writePage(html,filename) print("谢谢使用") if __name__=="__main__": kw = input("请输入需要爬取的贴吧名:") beginPage = int(input("请输入起始页:")) endPage = int(input("请输入结束页:")) url = "http://tieba.baidu.com/f?" key = urllib.parse.urlencode({"kw": kw}) fullurl = url + key tiebaSpider(fullurl,beginPage,endPage)
阅读更多
相关文章推荐
- 调用webapi 错误:使用 HTTP 谓词 POST 向虚拟目录发送了一个请求,而默认文档是不支持 GET 或 HEAD 以外的 HTTP 谓词的静态文件。的解决方案
- 支持post,get请求(http,https)的HttpClientUtils
- HttpClient中GET、POST方法示例,支持 https
- Windows平台利用wininet做的HTTP的GET和POST,支持HTTPS
- java封装httpClient工具(支持http和https,包含get和post请求)
- HTTP协议浅析(8种请求方法、GET和POST区别、幂等性、HTTP和HTTPS)
- https协议支持get/post方法
- 解析HTTP协议六种请求方法,get,head,put,delete,post有什么区别
- HTTP 方法:GET 对比 POST
- Android HTTP实例 使用GET方法和POST方法发送请求
- GO1.5实现简单的http并发请求,支持:GET、POST、HEAD、PUT
- dotnet 使用HttpWebRequest向Https Post数据时,需要证书确认的解决方法
- HTTP 方法:GET 对比 POST
- HTTP 方法:GET 对比 POST
- 安卓HTTP实例中post方法和get方法的区别
- HttpClient-4.3.X 中get和post方法使用
- Linux命令发送Http的get或post请求(curl和wget两种方法)
- 黑马程序员之ASP.NET学习笔记: Http方法:Get请求与Post请求的区别
- Linux实用技巧-CURL实现HTTP的GET POST方法
- MFC中Http通信Post和Get方法实现