安装

在命令行窗口进行下载

GET请求

  • 最基本的get请求可以直接用get方法
response = request.get("http://www.baidu.com/")response = requests.request("get", "http://www.baidu.com/")
  • 添加头部headers和参数

    • 如果想添加headers,可以传入headers参数来增加请求头中的headers信息
    • 如果要将参数放在url中传递,可以利用 params 参数

访问百度并传参到搜索框

#访问百度网站并将参数传进去,相当于在百度搜索咸鱼
import requestsurl = "http://www.baidu.com/s?"
kw = {"wd": "咸鱼"}
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}response = requests.get(url, params=kw, headers=headers)# 查看响应内容,即网站源码。返回的是Unicode格式
print(response.text)#查看响应内容,返回的是字节类型格式
print(response.content)#查看完整url地址
print(response.url)#查看响应头部字节编码
print(response.encoding)#查看响应状态码
print(response.status_code)--------------------------------------------------------------------------
............'http://www.baidu.com/s?wd=%E9%95%BF%E5%9F%8E''utf-8'200
  • ps
使用response.text 时,Requests 会基于 HTTP 响应的文本编码自动解码响应内容,大多数 Unicode 字符集都能被无缝地解码。使用response.content 时,返回的是服务器响应数据的原始二进制字节流,可以用来保存图片等二进制文件

POST请求

  • post:将要处理的数据发送给服务器
response = requests.post("http://www.baidu.com/", data = data)

访问有道翻译

  • 访问有道翻译并且翻译
  • 当我们翻译时,查看源码的network字段,查看表单数据,可以发现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dUcgflli-1622163185275)(C:\Users\26976\AppData\Roaming\Typora\typora-user-images\image-20210526195216696.png)]

import requestsform_data = {"i": "i love you","from": "AUTO","to": "AUTO","smartresult": "dict","doctype": "json","keyfrom":"fanyi.web","ue": "UTF-8","typoResult": "true","action": "FY_BY_REALTIME"
}url = "https://fanyi.youdao.com/"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}response = requests.post(url, data=form_data, headers=headers)
content = response.text
print(response.text)

代理

  • 如果需要使用代理,你可以通过为任意请求方法提供 proxies 参数来配置单个请求:
import requests# 根据协议类型,选择不同的代理
proxies = {"http": "http://12.34.56.79:9527","https": "http://12.34.56.79:9527",
}response = requests.get("http://www.baidu.com", proxies = proxies)
print response.text
  • 也可以通过本地环境变量 HTTP_PROXYHTTPS_PROXY 来配置代理:
export HTTP_PROXY="http://12.34.56.79:9527"
export HTTPS_PROXY="https://12.34.56.79:9527"

私密代理验证


import requests# 如果代理需要使用HTTP Basic Auth,可以使用下面这种格式:
proxy = { "http": "mr_mao_hacker:sffqry9r@61.158.163.130:16816" }response = requests.get("http://www.baidu.com", proxies = proxy)print response.text

用户访问机制

  • Web客户端验证,需要添加 auth = (账户名, 密码)
import requests auth=('test', '123456') response = requests.get('http://192.168.199.107', auth = auth) print response.text

Cookies 和 Session

Cookies

  • 如果一个响应中包含了cookie,那么我们可以利用 cookies参数拿到:
 import requests response = requests.get("http://www.baidu.com/") # 返回CookieJar对象:cookiejar = response.cookies # 将CookieJar转为字典:cookiedict = requests.utils.dict_from_cookiejar(cookiejar) print cookiejar print cookiedict
<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]> {'BDORZ': '27315'}

Session

  • 在 requests 里,session对象是一个非常常用的对象,这个对象代表一次用户会话:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开。

  • 会话能让我们在跨请求时候保持某些参数,比如在同一个 Session 实例发出的所有请求之间保持 cookie 。

  • 实现人人网登陆

import requests# 创建一个session对象,保存cookie值session = requests.session()headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}# 用户名和密码data = {"email": "mr_mao_hacker@163.com", "password": "alarmchime"}# 发送用户名和密码的请求,并获取登录后的cookie值,保存在seesion里session.post("http://www.renren.com/PLogin.do", data=data)# session包含用户登录后的Cookie值,可以直接访问那些登录后才可以访问的页面response = session.get("http://www.renren.com/410043129/profile")print(response.text)

处理HTTPS请求 SSL证书验证

  • Requests也可以为HTTPS请求验证SSL证书:
#要想检查某个主机的SSL证书,你可以使用 verify 参数(也可以不写)import requestsresponse = requests.get("https://www.baidu.com/", verify=True) # 也可以省略不写response = requests.get("https://www.baidu.com/")print response.text
  • 如果SSL证书验证不通过,或者不信任服务器的安全证书,则会报出SSLError,据说 12306 证书是自己做的
import requestsresponse = requests.get("https://www.12306.cn/mormhweb/")print response.text

结果:

SSLError: ("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",)
  • 改成这样就行了
response = requests.get("https://www.12306.cn/mormhweb/", verify = False)

Python爬虫之request模块相关推荐

  1. Python爬虫-02 request模块爬取妹子图网站

    简介 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3)#注意:requests库发送请求将网页内容下载 ...

  2. python爬虫模块_Python爬虫(request模块)

    Python Python开发 Python语言 Python爬虫(request模块) 发送简单的请求: 发送带header的请求: 发送带参数的请求: 例子如下: import requests ...

  3. 网络爬虫day1:python中的request模块基本使用

    网络爬虫day1:python中的request模块基本使用 get和post的区别 python运行代码 请求头 get和post的区别 在互联网的世界中,有一个不经常提起但是经常使用的协议:TCP ...

  4. Python爬虫进阶——urllib模块使用案例【淘宝】

    Python爬虫基础--HTML.CSS.JavaScript.JQuery网页前端技术 Python爬虫基础--正则表达式 Python爬虫基础--re模块的提取.匹配和替换 Python爬虫基础- ...

  5. Python爬虫之urllib模块2

    Python爬虫之urllib模块2 本文来自网友投稿 作者:PG-55,一个待毕业待就业的二流大学生. 看了一下上一节的反馈,有些同学认为这个没什么意义,也有的同学觉得太简单,关于Beautiful ...

  6. python爬虫之bs4模块(超详细)

    python爬虫之bs4模块(超详细) 一.bs4简介 二.使用方法 三.BeautifulSoup四大对象种类 (1)tag (2)NavigableString (3)BeautifulSoup ...

  7. python爬虫之requests模块2

    python网络爬虫之requests模块 session处理cookie proxies参数设置请求代理ip 基于线程池的数据爬取 一 获取验证码 步骤: ​ 1 注册云大码 http://www. ...

  8. 爬虫之request模块

    目录 request模块理论 实战练习 1.需求:爬取搜狗首页的页面数据 2.需求:爬取搜狗指定词条对应的搜索结果页面(简易网页采集器) 3.需求:破解百度翻译 4.爬取肯德基地点 5.爬取国家药品监 ...

  9. Python爬虫【urllib模块】

    通用爬虫 爬虫的一般流程 1 初始化一批URL,将这些URL放入队列 2 从队列中取出这些URL,通过DNS解析IP,对IP对应的网站下载HTML页面,保存到本地服务器中,爬取完的URL放到已爬取队列 ...

最新文章

  1. 关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题...
  2. 最长公共子序列(LCS)问题算法详解+例题(转换成LIS,优化为O(nlogn),看不懂你来打我)
  3. Apache POI操作Excel导出JAVABEAN对象方法
  4. .Net轻量状态机Stateless
  5. queue模块的使用
  6. rsync 07-confxml.xml配置文件
  7. Mysql 数据库中Where 关键字的使用
  8. python dll注入 网络_dll注入
  9. 【Proteus仿真】单端稳压和双极性对称稳压电源电路(LM7812、LM7912)
  10. 私有云搭建使用docker搭建
  11. 消费者购买决策行为研究模型
  12. 使用Python实现日历功能
  13. 用JS代码自动填写正方教务系统的教学评价
  14. STM32F4 FPU和DSP库使用
  15. 怎么查看自己浏览器的User-Agent
  16. springboot中thymeleaf渲染html模板
  17. 计算机开机变慢的十大原因
  18. Python中的*使用
  19. htmlcss全屏视频背景
  20. (python)小最的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中

热门文章

  1. Spring循环依赖图解
  2. Function name must be a string PHP出现这样的无措提示原因
  3. GCC AVR(Atmel Studio+ AVR Studio)在程序存储器(flash)空间存放常量或者常量数组
  4. Elasticsearch的UNASSIGNED未分配解决方案
  5. 摄像机标定2 原理篇
  6. 侯捷C++->虚函数与多态
  7. 玫琳凯任命Wendy Wang为亚太区首席商务官
  8. linux中event按键程序
  9. 噪声库NOISEX-92下载并用python转为wav
  10. SQL注入攻击常见方式及测试方法