一、requests库简介

  urllib库和request库的作用一样,都是服务器发起请求数据,但是requests库比urllib库用起来更方便,它的接口更简单,选用哪种库看自己。

  如果没有安装过这个库,需要先 pip install requests 安装。

二、requests库的基本用法

1、发送GET请求

  通过get方法去请求百度页面:

 import requests

 resp = requests.get('http://www.baidu.com/')
# text是requests库以自己猜测的解码方式去解码,所以可能会出现乱码的问题
print(resp.text)
# content返回的bytes的数据,所以可以根据自己指定的解码方式去解码就不会出现问题
print(resp.content.decode('utf-8'))
# url获取当前请求的url
print(resp.url)
# encoding获取当前页面的编码方式
print(resp.encoding)
# status_code获取当前的状态码
print(resp.status_code)

  那么如何添加请求参数和headers请求头信息呢,requests库现在就比urllib库好用简单了,urllib库还需要手动对请求的参数进行编码才能去请求,而requests库则将这个步骤在底层进行封装了,只需要将参数传递进去即可,如下:

 import requests

 url = 'http://www.baidu.com/s'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'
}
params = {
'wd': '林俊杰'
}
resp = requests.get(url, params=params, headers=headers)
print(resp.url) with open('baidu.html', 'w', encoding='utf-8') as f:
f.write(resp.content.decode('utf-8'))

2、发送POST请求

  我们以拉钩网为例,去爬取拉勾网的职位信息:

 import requests

 url = 'https://www.lagou.com/jobs/positionAjax.json?city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36',
'Referer': 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput='
}
data = {
'first': 'true',
'pn': 1,
'kd': 'python'
} resp = requests.post(url, data=data, headers=headers)
print(resp.json())

3、使用代理

  requests库使用代理就非常简单了,只需要在请求的方法(get、post)中添加proxies参数即可:

 import requests

 proxy = {
'http': '115.218.216.251:9000'
} resp = requests.get(url='http://www.httpbin.org/ip', proxies=proxy)
print(resp.text)

4、cookie模拟登陆

  我们可以通过cookie获取到cookie信息:

 import requests

 resp = requests.get('http://www.baidu.com/')
# cookie 返回cookie对象
print(resp.cookies)
# get_dict 将cookie信息以字典的形式返回
print(resp.cookies.get_dict())

  urllib库可以使用opener发送多个请求,并且多个请求之间是共享cookie的,requests库也要达到共享cookie的目的,我们可以使用requests库提供的session对象,这里的session不是web中的那个session,这里只是一个会话的对象而已,下面以登录人人网为例,来使用cookie来登录:

 import requests

 login_url = 'http://www.renren.com/PLogin.do'
dapeng_url = 'http://www.renren.com/880151247/profile'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36',
}
data = {
'email': '',
'password': 'xxxxx'
} session = requests.Session() session.post(url=login_url, data=data, headers=headers) resp = session.get(url=dapeng_url, headers=headers)
with open('renren.html', 'w', encoding='utf-8') as f:
f.write(resp.content.decode('utf-8'))

(爬虫)requests库的更多相关文章

  1. Python爬虫—requests库get和post方法使用

    目录 Python爬虫-requests库get和post方法使用 1. 安装requests库 2.requests.get()方法使用 3.requests.post()方法使用-构造formda ...

  2. Python爬虫--Requests库

    Requests Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库,requests是python实现的最简单易用的HTTP库, ...

  3. 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xa)的解决方法【华为云分享】

    [写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...

  4. [爬虫] requests库

    requests库的7个常用方法 requests.request() 构造一个请求,支撑以下各种方法的基础方法 requests.get() 获取HTML网页的主要方法,对应于HTTP的GET re ...

  5. Python爬虫 requests库基础

    requests库简介 requests是使用Apache2 licensed 许可证的HTTP库. 用python编写. 比urllib2模块更简洁. Request支持HTTP连接保持和连接池,支 ...

  6. python爬虫---requests库的用法

    requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多 因为是第三方库,所以使用前需要cmd安装 pip install requests 安装完成后import一下 ...

  7. Python 爬虫-Requests库入门

    2017-07-25 10:38:30 response = requests.get(url, params=None, **kwargs) url : 拟获取页面的url链接∙ params :  ...

  8. Python爬虫---requests库快速上手

    一.requests库简介 requests是Python的一个HTTP相关的库 requests安装: pip install requests 二.GET请求 import requests # ...

  9. 4.爬虫 requests库讲解 GET请求 POST请求 响应

    requests库相比于urllib库更好用!!! 0.各种请求方式 import requests requests.post('http://httpbin.org/post') requests ...

  10. 6.爬虫 requests库讲解 总结

    requests库的总结: 用ProcessOn根据前面的几节内容做了个思维导图:

随机推荐

  1. java中如何从一行数据中读取数据

    目录 @(如何从一行数据中切割数据) 例如我要从一行学生信息中分割出学号.姓名.年龄.学历等等 ==主要使用split方法,split方法在API中定义如下:== public String[] sp ...

  2. Vue基本使用

    Vue.js是一款流行的开源JavaScript前端框架,旨在更好地组织与简化Web开发.Vue所关注的核心是MVC模式中的视图层,同时,它也能方便地获取数据更新,并通过组件内部特定的方法实现视图与模 ...

  3. 前端笔记之CSS(下)浮动&BFC&定位&Hack

    一.浮动 1.1 各个语言的主要知识点 HTML:标签语义化(那么怎么样布局才是合理的?没有绝对的对和错) CSS: 样式: 布局: 标准流(标准文档流.普通文档流):盒子模型(width/heigh ...

  4. .NET下的使用ActiveMQ

    项目结构 ActiveMQRecive下Program.cs using Apache.NMS; using Apache.NMS.ActiveMQ; using Apache.NMS.Util; u ...

  5. Flask python初期九九乘法表

    from  flask import Flask    #导入 app = Flask(__name__) @app.route('/') def index(): res=" " ...

  6. 图解 -- Win10 OpenSSH

    一.安装OpenSSH 客户端 .OpenSSH 服务器 设置 -> 管理可选功能 -> 添加功能 -> [OpenSSH 客户端]   [OpenSSH 服务器]  1.设置 2. ...

  7. Android USB Headset: Device Specification

    For USB headsets to work seamlessly across the Android ecosystem, Android devices must support them ...

  8. JavaScript第一回-来龙去脉

    简写:JavaScript-JS   ECMAScript-ES 写在前面的话:啃文字大多时间不是件愉快的事情,但是我们必须过这个坎,让自己习惯,让自己不讨厌,至于喜欢不喜欢,我们等时间给出答案. J ...

  9. 距离度量以及python实现(一)

    1. 欧氏距离(Euclidean Distance)        欧氏距离是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式. (1)二维平面上两点a(x1,y1)与b(x2,y2)间 ...

  10. NavUtils【底部虚拟导航栏工具类】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 获取底部虚拟导航栏的高度值 效果图 代码分析 checkDeviceHasNavigationBar(Context context ...