欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
  一、什么是requests
 
  Requests是用python语言基于urllib编写的,采用的是Apache2Licensed开源协议的HTTP库。
 
  相对于urllib库(自带,无需手动安装)而言,requests库的使用显得简单便捷(本质就是封装了urllib3)。
 
  官方文档:http://cn.python-requests.org/zh_CN/latest/
 
  二、requests的安装
 
  1.电脑运行ctrl+R输入cmd(命令提示符)
 
  2.运行pipinstallrequests安装
 
  三、requests库的使用
 
  在requests库中,我们常用的是requests.get()和requests.post()
 
  post请求与get请求区别:
 
  1.在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTMLHEADER内提交。
 
  2.GET方式提交的数据最多只能有1024Byte,而POST则没有此限制。
 
  3.安全性问题。正如在(1)中提到,使用Get的时候,参数会显示在地址栏上,而Post不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用post为好。
 
  requests.get()
 
  importrequests
 
  response=requests.get('http://www.baidu.com')#获取百度的源码
 
  response.encoding=response.apparent_encoding#程序分析源码采用的编码格式
 
  print(response.text)#打印源码
 
  其实,我们在使用过程中经常需要传递一些参数,如百度搜索python,这时我们就可以通过拼接构造URL的方式实现,那么数据会以键/值对的形式置于URL中,跟在一个问号的后面。
 
  例如:http://www.baidu.com/s?wd=python中Requests允许你使用params关键字参数,以一个字典来提供这些参数。
 
  importrequests
 
  url='http://www.baidu.com/s'
 
  params={
 
  'wd':'python'
 
  }
 
  response=requests.get(url,params=params)#传入参数
 
  response.encoding=response.apparent_encoding
 
  print(response.url)#返回http://www.baidu.com/s?wd=python
 
  当然,你也可以使用最简单的拼接
 
  url='http://www.baidu.com/s?wd='+'python'
 
  response=requests.get(url)
 
  print(response.url)#返回http://www.baidu.com/s?wd=python
 
  拓展知识:
 
  你还可以将一个列表作为值传入:
  importrequests
 
  params={'key1':'value1','key2':['value2','value3']}
 
  r=requests.get('http://httpbin.org/get',params=params)
 
  print(r.url)
 
  #打印的结果是
 
  #http://httpbin.org/get?key1=value1&key2=value2&key2=value3
 
  requests.post()
 
  importrequests
 
  data={
 
  "name":"zhaofan",
 
  "age":23
 
  }
 
  response=requests.post("http://httpbin.org/post",data=data)
 
  print(response.text)
 
  '''
 
  返回
 
  {
 
  "args":{},
 
  "data":"",
 
  "files":{},
 
  "form":{
 
  "age":"23",
 
  "name":"zhaofan"
 
  },
 
  "headers":{
 
  "Accept":"*/*",
 
  "Accept-Encoding":"gzip,deflate",
 
  "Content-Length":"19",
 
  "Content-Type":"application/x-www-form-urlencoded",
 
  "Host":"httpbin.org",
 
  "User-Agent":"python-requests/2.20.0"
 
  },
 
  "json":null,
 
  "origin":,
 
  "url":"https://httpbin.org/post"
 
  }
 
  '''
 
  其他HTTP请求类型:PUT,DELETE,HEAD以及OPTIONS其实都是差不多的用法
 
  r=requests.put('http://httpbin.org/put',data={'key':'value'})
 
  r=requests.delete('http://httpbin.org/delete')
 
  r=requests.head('http://httpbin.org/get')
 
  r=requests.options('http://httpbin.org/get')
 
  四、定制请求头
 
  网站建立的最终目的是让人来访问的,其实几乎每个网站都是拒绝爬虫的,因此引出各种各样的反爬手段,那么网站是靠什么来判定我们是爬虫的?
 
  方法有很多,其中最普遍的是通过请求头来判断。
 
  在发送HTTP请求的时候浏览器都会带上请求头信息等,如果我们的程序没有带上,或者带上的请求头信息是错误的,也就是不被服务器认可的,那么就会遭到服务器的拒绝!
 
  importrequests
 
  url='http://www.baidu.com/s'
 
  params={
 
  'wd':'python'
 
  }
 
  #请求头
 
  headers={
 
  'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/73.0.3683.86Safari/537.36',
 
  }
 
  response=requests.get(url,params=params,headers=headers)
 
  此外,我们也可以通过fake_useragent来随机生成一个请求头
 
  fromfake_useragentimportUserAgent
 
  us=UserAgent()
 
  print(us.random)#打印随机生成的请求头
 
  注意:我们只是加上了User-Agent信息就可以正常访问了,但是浏览器是发送了比我们更多的信息的。如果遇到加上请求头User-Agent信息也不成功的网站,可以尝试添加其他请求头信息。
 
  五、响应状态码
 
  importrequests
 
  url='http://www.baidu.com/'
 
  response=requests.get(url)
 
  print(response.status_code)#返回200
 
  相关的响应状态码请访问网友的博客:https://www.cnblogs.com/dekui/p/7801289.html
 
  六、cookie
 
  现在的网站中有这样的一种网站类型,也就是需要用户注册以后,并且登陆才能访问的网站,或者说在不登录的情况下不能访问自己的私有数据,例如微博,微信等。
 
  网站记录用户信息的方式就是通过客户端的Cookie值。例如:当我们在浏览器中保存账号和密码的同时,浏览器在我们的电脑上保存了我们的用户信息,并且在下次访问这个页面的时候就会自动的为我们加载Cookie信息。
 
  在需要登陆的网站中,浏览器将Cookie中的信息发送出去,服务器验证Cookie信息,确认登录。既然浏览器在发送请求的时候带有Cookie信息,那么我们的程序同样也要携带Cookie信息。
 
  Cookie是当你访问某个站点或者特定页面的时候,留存在电脑里的一段文本,它用于跟踪记录网站访问者的相关数据信息,比如:搜索偏好、行为点击,账号,密码等内容。
 
  通常Cookie值信息可以在浏览器中复制过来,放到headers中:
 
  headers={
 
  'Accept':'application/json,text/javascript,*/*;q=0.01',
 
  'Accept-Encoding':'gzip,deflate,br',
 
  'Accept-Language':'zh-CN,zh;q=0.9',
 
  'Connection':'keep-alive',
 
  'Content-Length':'26',
 
  'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8',
 
  'Cookie':'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',#浏览器中复制
 
  'Host':'www.lagou.com',
 
  'Origin':'https://www.lagou.com',
 
  'Referer':'https://www.lagou.com/jobs/list_Python?labelWords=&fromSearch=true&suginput=',
 
  'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/74.0.3729.157Safari/537.36',
 
  'X-Anit-Forge-Code':'0',
 
  'X-Anit-Forge-Token':'None',
 
  'X-Requested-With':'XMLHttpRequest',
 
  }

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h54925.shtml