#coding:utf8 #python中用第三方库requests实现HTTP请求,是python中最常见的。 #一:请求与响应模型 #GET请求 import requests r = requests.get('https://www.baidu.com/') print r.content #POST请求 import requests postdata = {'username' : '黑暗骑仕win', 'password' : ''} r = requests.post('https://www.baidu.com/',data=postdata) print r.content #请求复杂网址,如:http://zzk.cnblogs.com/s/blogpost?Keywords=blog:qiyeboy&pageindex=1 import requests payload = {'Keywords': 'blog:qiyeboy','pageindex':1} r = requests.get('http://zzk.cnblogs.com/s/blogpost', params=payload) print r.url #打印出:http://zzk.cnblogs.com/s/blogpost?Keywords=blog:qiyeboy&pageindex=1 #二:响应与编码 import requests r = requests.get('https://www.baidu.com/') print 'content-->'+r.content print 'text-->'+r.text print 'encoding-->'+r.encoding r.encoding='utf-8' print 'new text-->'+r.text #chardet是一个非常优秀的字符串/文件编码检测模块pip install chardet import requests import chardet r = requests.get('https://www.baidu.com/') print chardet.detect(r.content) #chardet.detect()返回字典 #直接将chardet探测到的编码,赋值给r.encoding实现解码,r.text输出就不会乱码 r.encoding = chardet.detect(r.content)['encoding'] print r.text #流模式获取响应 import requests r = requests.get('https://www.baidu.com/',stream=True) #设置stream=Ture标志位,使响应以字节流方式进行读取 print r.raw.read(10) #r.raw.read函数指定读取的字节数 #三:请求头headers处理 #与urllib2相似,在get函数中添加headers参数即可 import requests user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers={'User-Agent':user_agent} r = requests.get('https://www.baidu.com/',headers=headers) print r.content #四:响应码code和响应头headers处理 #status_code获取响应码 headers获取相应头 import requests r = requests.get('https://www.baidu.com/') if r.status_code == requests.codes.ok: print r.status_code #响应码 print r.headers #响应头 print r.headers.get('content-type') #推荐使用这种方式获取其中的某个字段 print r.headers['content-type'] #不推荐使用这种获取方式 else: r.raise_for_status() #五:Cookie处理 #在响应中包含Cookie值时,获取Cookie字段值 import requests user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers = {'User-Agent':user_agent} r = requests.get('https://www.baidu.com/',headers=headers) #遍历出所有的cookie字段的值 for cookie in r.cookies.keys(): print cookie+':'+r.cookies.get(cookie) #自定义Cookie值发送出去 import requests user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers = {'User-Agent':user_agent} cookies = dict(name='qiye',age='10') r = requests.get('https://www.baidu.com/',headers=headers,cookies=cookies) print r.text #Requeste中的session,可以像浏览器那样,每次访问的时候,程序自动把Cookie值带上 import requests loginUrl = 'http://tieba.baidu.com/' s = requests.Session() #首先访问登陆界面,作为游客,服务器会先分配一个cookie r = s.get(loginUrl,allow_redirects=True) datas={'name':'黑暗骑仕win','passwd':''} #向登陆链接发送post请求,验证成功,游客权限转为会员权限 r = s.post(loginUrl, data=datas,allow_redirects=True) print r.text #六:重定向与历史消息 #allow_redirects字段设置重定向 #如:r=requests.get('http://www.baidu.com',allow_redirects=True) #allow_redirects=True允许重定向;allow_redirects=False禁止重定向 #若允许重定向,则通过r.history字段可查看历史信息,即访问成功之前的所有请求跳转信息 import requests r = requests.get('https://www.baidu.com') print r.url print r.status_code print r.history #七:超时设置:使用参数timeout requests.get('https"//www.baidu.com', timeout=0.1) #八:Proxy代理设置 #可以为任意请求方法通过设置proxies参数来配置单个请求 import requests proxies = { "http":"http://127.0.0.1:3128", "https":"http://127.0.0.1:1080", } requests.get("http://example.org", proxies=proxies) #也可以通过环境变量HTTP_PROXY和HTTPS_PROXY来配置代理,但爬虫不常用 #代理需要使用HTTP Basic Auth ,可以使用http://user:password@host/语法: proxies = { "http":"http://user:pass@127.0.0.1:3128/", }
初始网络爬虫之三:网络爬虫最常用的requests库
最新推荐文章于 2024-08-08 08:00:02 发布