爬虫的基本原理:爬虫本质上是模拟人浏览信息的过程,只不过他通过计算机来达到快速抓取筛选信息的目的。所以我们想要写一个爬虫,最基本的就是要将我们需要抓取信息的网页原原本本的抓取下来。这个时候就要用到requests库了。

1、requests的安装

requests库本质上就是模拟了我们用浏览器打开一个网页,发起请求是的动作。它能够迅速的把请求的html源文件保存到本地。

requests安装比较简单,pip install requests

2、requests的使用

开始要导入 Requests 模块:

 import requests

然后,尝试获取某个网页。

 r = requests.get('https://douban.com')

现在,有一个名为 r 的Response 对象。可以从这个对象中获取所有我们想要的信息。

Requests 简便的 API 意味着所有 HTTP 请求类型都是显而易见的。例如,你可以这样发送一个 HTTP POST 请求:

 r = requests.post("http://httpbin.org/post")

其他 HTTP 请求类型:PUT,DELETE,HEAD 以及 OPTIONS

 r = requests.put("http://httpbin.org/put")
r = requests.delete("http://httpbin.org/delete")
r = requests.head("http://httpbin.org/get")
r = requests.options("http://httpbin.org/get")

传递 URL 参数

requests.get(url,params=None,**kwargs)方法

 #这个方法可以接收三个参数,其中第二个默认为None 第三个可选
def get(url, params=None, **kwargs)
#作用是模拟发起GET请求
Sends a GET request.
#模拟获取页面的url链接
:param url: URL for the new :class:Request object.
#额外参数 字典或字节流格式,可选
:param params: (optional) Dictionary or bytes to be sent in the query string for the :class:Request.
# 十二个控制访问参数,比如可以自定义header
:param **kwargs: Optional arguments that request takes.
# 返回一个Response对象
:return: :class:Response <Response> object
:type: requests.Response

下面着重讲一下 **kwargs 这个参数

kwargs: 控制访问的参数,均为可选项

params : 字典或字节序列,作为参数增加到url中

data : 字典、字节序列或文件对象,作为Request的内容 json : JSON格式的数据,作为Request的内容

headers : 字典,HTTP定制头

cookies : 字典或CookieJar,Request中的cookie

auth : 元组,支持HTTP认证功能

files : 字典类型,传输文件

timeout : 设定超时时间,秒为单位

proxies : 字典类型,设定访问代理服务器,可以增加登录认证

allow_redirects : True/False,默认为True,重定向开关

stream : True/False,默认为True,获取内容立即下载开关

verify : True/False,默认为True,认证SSL证书开关

cert : 本地SSL证书路径

url: 拟更新页面的url链接

data: 字典、字节序列或文件,Request的内容

json: JSON格式的数据,Request的内容

例如:

 payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get", params=payload) #结果
print(r.url)
http://httpbin.org/get?key2=value2&key1=value1

注意字典里值为 None 的键都不会被添加到 URL 的查询字符串里。

还可以将一个列表作为值传入:

 payload = {'key1': 'value1', 'key2': ['value2', 'value3']}

 r = requests.get('http://httpbin.org/get', params=payload)
print(r.url)
http://httpbin.org/get?key1=value1&key2=value2&key2=value3

响应内容:

我们能读取服务器响应的内容。

requests.Response

  • status_code状态码
  • headers应答的http头
  • json应答的json数据
  • text应答的Unicode编码的文本
  • content应答的字节流数据
  • cookies应答的cookies.自动处理。

常用的两个控制访问参数:

a. 假设我们需要在GET请求里自定义一个header头文件:

 import requests

 hd = {'User-agent':''}
r = requests.get('http://www.baidu.com', headers=hd)
print(r.request.headers)
'''
OUT:
{'User-agent': '123', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive
'}
'''

b. 假设我们要自定义一个代理池

 pxs = { 'http': 'http://user:pass@10.10.10.1:1234',
'https': 'https://10.10.10.1:4321' }
r = requests.get('http://www.baidu.com', proxies=pxs)

3、requests抓取网页的通用框架

 import requests

 def getHtmlText(url):
try:
r = requests.get(url, timeout=30)
# 如果状态码不是200 则应发HTTOError异常
r.raise_for_status()
# 设置正确的编码方式
r.encoding = r.apparent_encoding
return r.text
except:
return "Something Wrong!"

requests基础的更多相关文章

  1. 从0开始学爬虫4之requests基础知识

    从0开始学爬虫4之requests基础知识 安装requestspip install requests get请求:可以用浏览器直接访问请求可以携带参数,但是又长度限制请求参数直接放在URL后面 P ...

  2. 爬虫简介、requests 基础用法、urlretrieve()

    1. 爬虫简介 2. requests 基础用法 3. urlretrieve() 1. 爬虫简介 爬虫的定义 网络爬虫(又被称为网页蜘蛛.网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程 ...

  3. 小白学 Python 爬虫(17):Requests 基础使用

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  4. Python爬虫系列(二):requests基础

    1.发送请求: import requests # 获取数据#r是一个 response 对象.包含请求返回的内容r = requests.get('https://github.com/timeli ...

  5. 1、requests基础

    一.升级pip版本的命令 : python -m pip install --upgrade pip 二.requests安装  windows系统系cmd运行 pip install request ...

  6. python requests 基础学习

    首先,Python 标准库中的 urllib2 模块提供了你所需要的大多数 HTTP 功能,但是它的 API 不友好.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种方法覆盖,来 ...

  7. 爬虫3 requests基础之下载图片用content(二进制内容)

    res = requests.get('http://soso3.gtimg.cn/sosopic/0/11129365531347748413/640') # print(res.content) ...

  8. 爬虫3 requests基础之 乱码编码问题

    import requests res = requests.get('http://www.quanshuwang.com') res.encoding = 'gbk' print(res.text ...

  9. 爬虫3 requests基础2 代理 证书 重定向 响应时间

    import requests # 代理 # proxy = { # 'http':'http://182.61.29.114.6868' # } # res = requests.get('http ...

  10. 爬虫3 requests基础

    import requests # get实例 # res = requests.get('http://httpbin.org/get') # # res.encoding='utf-8' # pr ...

随机推荐

  1. bisect模块用于插入

    参考链接: chttp://www.cnblogs.com/skydesign/archive/2011/09/02/2163592.html水

  2. debezium 数据变更工具使用

    1.  作用 简单概述就是CDC(change data capture),实时数据分析领域用的比较多   2. 简单使用(基于官网的docker 说明)  备注: 测试没有使用守护进程模式为了方便测 ...

  3. bzoj 1119 [POI2009]SLO && bzoj 1697 [Usaco2007 Feb]Cow Sorting牛排序——思路(置换)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1119 https://www.lydsy.com/JudgeOnline/problem.p ...

  4. sar 命令

    sar 命令使用详解 1.使用sar命令查看网络流量(每两秒显示一次,共查看3次): [root@localhost ~]# sar -n DEV 2 3Linux 2.6.32-431.el6.x8 ...

  5. MongoDB-WriteConcern

    WriteConcern safe=false 非安全模式 很快

  6. java代码----equals和==区别

    总结: ==的意义在于比较的是整型 package com.aa; // public class Bd { public static void main(String[] args) { Inte ...

  7. Jenkins设置自动发邮件

    安装Jenkins方法详解:https://www.cnblogs.com/lizhe860/p/9901257.html 一.设置全局变量 从首页依次进入系统工具→系统设置 二.在项目配置中设置项目 ...

  8. 记一次oralce 11g r2 rac安装问题

    环境:虚拟机[root@rac1 ~]# lsb_release -aLSB Version:        :base-4.0-amd64:base-4.0-noarch:core-4.0-amd6 ...

  9. jQuery笔记——事件

    常用的事件有:click.dblclick. mousedown.mouseup.mousemove.mouseover.mouseout.change.select.submit.keydown. ...

  10. Java学习之Mysql结构优化

    背景:业务发展初期为了便于快速迭代,很多应用都采用集中式的架构,随着业务规模的扩展,系统变得越来越复杂,访问量越来越大,不得不进一步扩展系统的吞吐能力. 优化1.主从集群:通过数据库的复制策略,可以将 ...