爬虫之requests介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫之requests介绍相关的知识,希望对你有一定的参考价值。

一 介绍

1 介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是urllib3)
2 注意:requests库发送请求将网页代码下载下来之后,并不会执行js代码,这需要我们分析目标站点,然后发起新的requests请求
3 各种请求方式:常用的是requests.get()和requests.post()
    requests.get(url)
    requests.post(url,data={‘key‘:value})
    requests.put(url,data={‘key‘:‘value‘})
    request.delete(url)
    request.option(url)

二 基于GET请求

1. 基本请求

import requests
response = requests.get(‘http://www.baidu.com‘)
print(response.text)

高级用法:

1. SSL Cert Verification

# 证书验证(大部分网站都是https)
import requests
response = requests.get(‘https://www.12306.com‘) # 如果是ssl请求,首先检查证书是否合法,不合法则报错,程序终止

#改进1:去掉报错,但是会警告
import requests
response = requests.get(‘https://www.12306.com‘,vertify=False) # 不验证证书,有警告,返回200

#改进2:去掉报错,并且去掉警告信息
import requests
from requests.packages import urllib3
urllib3.disable_warning() # 关闭警告
response = requests.get(‘https://www.12306.com‘)

#改进3:加上证书
#很多网站都是https,但是不用证书也可以访问,大多数情况下都是可以携带也可以不携带证书
#知乎,百度都是可带可不带
#有硬性要求的,则必须带,比如对于定向的用户,拿到证书后才有权限访问某个特定的网站

import requests
response=requests.get(‘https://www.12306.cn‘,
              cert=(‘/path/server.crt‘,‘/path/key‘))
)

2. 使用代理


#官网链接: http://docs.python-requests.org/en/master/user/advanced/#proxies


#代理设置:先发送请求给代理,然后由代理帮忙发送(封ip是常见的事情)
import requests
proxies={
‘http‘:‘http://egon:[email protected]:9743‘,#带用户名密码的代理,@符号前是用户名与密码
‘http‘:‘http://localhost:9743‘,
‘https‘:‘https://localhost:9743‘,
}
respone=requests.get(‘https://www.12306.cn‘,
proxies=proxies)


print(respone.status_code)


 


#支持socks代理,安装:pip install requests[socks]
import requests
proxies = {
‘http‘: ‘socks5://user:[email protected]:port‘,
‘https‘: ‘socks5://user:[email protected]:port‘
}
respone=requests.get(‘https://www.12306.cn‘,
proxies=proxies)


print(respone.status_code)

 

3. 超时设置

#超时设置
#两种超时:float or tuple
#timeout=0.3 #代表从发出到接收到的总时间
#timeout=(0.1,0.2) #0.1表示链接超时 0.2表示接收数据的超时时间

import requests
response=requests.get(‘https://www.baidu.com‘,timeout=0.001)

4. 认证设置

 

#官网链接:http://docs.python-requests.org/en/master/user/authentication/

#认证设置:登陆网站是,弹出一个框,要求你输入用户名密码(与alter很类似),此时是无法获取html
# 但本质原理是拼接成请求头发送
# r.headers[‘Authorization‘] = _basic_auth_str(self.username, self.password)
# 一般的网站都不用默认的加密方式,都是自己写
# 那么我们就需要按照网站的加密方式,自己写一个类似于_basic_auth_str的方法
# 得到加密字符串后添加到请求头
# r.headers[‘Authorization‘] =func(‘.....‘)

#看一看默认的加密方式吧,通常网站都不会用默认的加密设置
import requests
from requests.auth import HTTPBasicAuth
r=requests.get(‘xxx‘,auth=HTTPBasicAuth(‘user‘,‘password‘))
print(r.status_code)

#HTTPBasicAuth可以简写为如下格式
import requests
r=requests.get(‘xxx‘,auth=(‘user‘,‘password‘))
print(r.status_code)

5. 异常处理

# 异常处理
import requests
from requests.exceptions import *

try:
  x=requests.get(‘https://www.baidu.com‘,timeout=0.0001)
except ReadTiomout:
  print(‘访问超时‘)
except ConnectionError:#网络不通
  print(‘网络不通‘)
except RequestException:
  .....

6. 上传文件

import requests
files = {‘file‘:open(‘a.jpg‘,‘rb‘)}
response=requests.post(url,files=files)

 

以上是关于爬虫之requests介绍的主要内容,如果未能解决你的问题,请参考以下文章

爬虫之request模块

Python爬虫之request模块

python爬虫之requests库介绍

Python之爬虫总结

python爬虫之requests库

爬虫之requests