原创 Python爬虫学习笔记(1)——requests库

2017-11-7 13:50 984 11 11 分类: 软件与OS 文集: Python爬虫学习笔记


1、Requests库介绍

            Requests 库是Python的第三方库,它也是目前公认的爬取网页的最好的第三方库。它的使用比较简洁,甚至用一行代码就可以获取相关的资源,更多的关于Requests 库的信息可以在http://www.python-requests.org看到。


2、测试requests库

状态码是200,说明访问成功

更改它的编码,然后输出网页内容


requests库的常用方法

3、requests库的get方法

获得一个网页的最简单的一行代码就是:

r = requests.get(url)

通过geturl构造了一个向服务器请求资源的Request对象,返回一个包含服务器资源的Response对象。

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

url:拟获取页面的url 链接;

params: url中的额外参数,字典或字节流格式,可选;

**kwargs: 12个控制访问的参数;


4、Response对象


Response 属性



r.encoding: 如果header 中不存在charset,则认为编码为ISO-8859-1


5、requests库的异常


r.raise_for_status() : 如果不是200,产生异常requests.HTTPError


6、爬取网页的通用代码框架

import requests

def getHTMLText(url):
try:
r = requests.get(url,timeout=30)
r.raise_for_status() #如果状态不是200,引发HTTPError异常
r.encoding = r.apparent_encoding
return r.text
except:
return "发生了异常"

if __name__=="__main__":
url = "http://www.baidu.com"
print(getHTMLText(url))


7、HTTP协议

       HTTP,Hypertext Transfer Protocol,超文本传输协议。它是一个基于请求与响应模式的、无状态的应用层协议。它采用URL作为定位网络资源的标识。

URL格式 http://host[:port][path]

host:合法的主机域名或者IP地址;port:默认为80path:请求资源的路径;


HTTP对资源的操作


HTTP协议与requests库的功能


requests库的head()方法


requests库的post()方法


8、requests库的主要方法

(1)requests.request(method,url,**kwargs)

method:请求方式,对应get/put/post7

**kwargs:控制访问参数,共13

(2)**kwargs(13个可选参数)

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


data:字典、字节序列或文件对象

jsonJSON格式的数据,作为Requests的内容

headers: 字典,HTTP定制头

hd = {'user-agent':'Chrome/10'}
r = requests.request('POST','http://python123.io/ws',header=hd)

cookies:字典或CookieJar,Request 中的cookie

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


file:字典类型,传输文件

fs = {'file':open('data.xls','rb')}
r = requests.request('POST','http://python123.io/ws',files=fs)


timeout:设定超时时间

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

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

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

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

cert:本地SSL证书路径


文章评论0条评论)

登录后参与讨论
相关推荐阅读
LoneSurvivor 2018-02-25 08:26
C++输入/输出流(2)
1. get()函数#include<iostream>using namespace std;int main(){    char s1[80], s2[...
LoneSurvivor 2018-02-23 12:19
C++输入/输出流(1)
1. 输入/输出流类层次 C++的输入/输出流类库是用派生方法建立起的,它有2个平行的基类,streambuf和ios。其他的流类都是从这两个基类直接或间接派生的。1.1  ...
LoneSurvivor 2018-02-19 11:36
C++多态(4)——特殊运算符重载和类类型转换
1.“++”和“--”的重载     运算符“++”和“--”的重载要区分前置和后置两种形式。如果不区分前置和后置,则使用operator++()或operator—()即可...
LoneSurvivor 2018-02-12 11:15
C++多态(3)——运算符重载
1.     运算符重载的定义     运算符重载也是实现多态的一个重要手段。运算符重载实现的是编译时的多态,即静态多态性。C++预...
LoneSurvivor 2018-02-12 10:31
C++多态(2)——纯虚函数与抽象类
   抽象类是一种特殊的类,它提供了统一的操作界面。建立抽象类是为了多态地使用抽象类的成员函数。抽象类是包含纯虚函数的类。 1.    ...
LoneSurvivor 2018-02-11 16:24
C++多态(1)
1.     多态      多态是人类思维方式的一种直接模拟,多态性是指不同对象接收到相同的消息时,根据对象类的不同而产...
我要评论
0
11
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /4 下一条