Python中的urllib,urllib三种不同的请求方式
2017-07-17 14:50
603 查看
1、urllib获取服务器的资源
自定义爬虫的重要组件获取百度首页的资源:
#3.x的标准写法 import urllib.request import urllib.parse #百度的首页 from bs4 import BeautifulSoup url = "http://www.baidu.com/" #发起一个request请求,得到返回对象 res = urllib.request.urlopen(url) #查看http访问状态 if res.status == 200: print("访问成功") #获取数据 data = res.read().decode("utf-8") print(data) soup = BeautifulSoup(data) print(soup.title.string)
2.urllib.request回顾
urllib.request提供三种不同的请求方式:第一种是get请求 方式一:urllib.request.urlopen(url) 方式二:先创建一个urllib.request.Request对象,然后将对象放入urlopen中。urllib.request.urlopen(Request对象) 第二种是POST:携带数据过去 比如:登录用户名,密码 先创建一个urllib.request.Request 将请求数据放到Request对象中urllib.request.Request(url,data) 注意:在此之前先将data进行转化: data = urllib.parse.urlencode(values) 第三种是:添加请求头
#get 请求 import urllib.request #get 请求方式1 url = "http://www.baidu.com" resp = urllib.request.urlopen(url) if resp.status ==200: data = resp.read().decode("utf-8") #print(data) #get请求方式2 url = "http://www.baidu.com" req = urllib.request.Request(url) resp = urllib.request.urlopen(req) if resp.status ==200: data = resp.read().decode("utf-8") #print(data) #post请求 data = {"name":"张三","age":"17"} url = "http://www.baidu.com" z_data = urllib.parse.urlencode(data) req = urllib.request.Request(url,z_data.encode('utf-8')) resp = urllib.request.urlopen(req) if resp.status ==200: data = resp.read().decode("utf-8") #print(data) #header import urllib.parse import urllib.request url = "http://www.baidu.com" user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' values = {'name' : 'Michael Foord', 'location' : 'Northampton', 'language' : 'Python'} headers = {'User-Agent':user_agent} data = urllib.parse.urlencode(values) req = urllib.request.Request(url, data.encode("utf-8"), headers) response = urllib.request.urlopen(req) the_page = response.read().decode("utf-8") print(the_page)
相关文章推荐
- python requests三种带参数的请求方式
- Android okhttp 三种请求方式 get put post
- python中三种处理文件输出的方式
- Python selenium 三种等待方式
- python3.X使用urllib与2.X不同
- 使用 Python 实现文件递归遍历的三种方式
- 关于python2和3版本不同引发的urllib报错及引出的字符串问题
- Apache下运行Python WEB Applications的三种方式
- Extjs中三种不同的数据提交方式
- python3.5 urllib包发送请求(12306查询)
- 用三种不同的方式实现TabHost功能(一)
- 学习笔记之安卓GET与POST网络请求的三种方式
- Ajax之post请求跨站请求csrf_token发送处理de三种方式
- python---到指定URL地址下载图片验证码,并保存不同用户名,Urllib2,urllib,os,range,time
- 实战Linux下三种不同方式的提权技巧
- Ajax以post方式传送带参的数据方式与get请求的不同
- javac 的三种不同编译方式
- 【FastJSON】解决FastJson中“$ref 循环引用”的问题<三种方式对应不同需求>
- 动态方法调用 在Struts2中动态方法调用有三种方式,动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多 第一种方式:指定method属性 这种方式我们前面已经用到过
- python For 循环 三种遍历方式