Python爬虫学习(二)--requests模块

requests模块

1.安装:

一、在命令行输入:

pip install requests

二、wheel安装:

下载对应的wheel文件:链接: https://pypi.python.org/pypi/requests/版本号#downloads

然后在命令行进入wheel文件目录,利用pip进行安装

pip install 文件名

2.基本用法

(1) GET请求方法:


import requests

r = requests.get(url='',params='' )
print(r.text)

我们来对百度网址进行一次请求:


import requests

r = requests.get(url='https://www.baidu.com')

print(type(r))  # 查看响应类型
print(r.status_code)  # 打印状态码
print(r.cookies)  # 返回cookies

打印结果:


<class 'requests.models.Response'>
200
<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>

附加额外信息的GET请求:

设置params参数,传入字典

import requests

data = {
    
    
        'name' : 'tom',
        'age' : '22'
    }

r = requests.get(url='https://httpbin.org/get' , params=data)

print(r.text)

运行结果如下:

  "args": {
    "age": "22", 
    "name": "tom"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.25.0", 
    "X-Amzn-Trace-Id": "Root=1-5ff01765-639962aa3f8c52747fa309f5"
  }, 
  "origin": "111.18.93.192", 
  "url": "https://httpbin.org/get?name=tom&age=22 "
}

此时url被拼接为https://httpbin.org/get?name=tom&age=22

使用get发放爬取GitHub站点图标:

import requests

r = requests.get(url='https://github.com/favicon.ico' )
with open('favicon.ico','wb') as f: #结果保存为favicon.ico
    f.write(r.content)

(2)POST请求:

post请求中,使用data进行传参。

import requests

data = {
    
    'name':'tom','age':'22'}
r = requests.post('https://httpbin.org/post', data = data)
print(r.text)

3.高级用法

(1)文件上传:
上传的文件必须要与该脚本在同一目录下。


import requests

files = {
    
    'file' : open('favicon.ico','rb')}
r = requests.post('https://httpbin.org/post',files=files)
print(r.text)

(2)Cookies

使用requests获取cookies:


import requests

r = requests.get(url='https://www.baidu.com' )
print(r.cookies)
for key,value in r.cookies.items():
    print(key + '=' + value)

首先调用cookies属性获得Cookies,再通过items()方法转化为元组组成的列表,遍历输出每一个cookies。

(3)会话维持:

Session对象:

在requests中,直接利用get或者post对网页进行请求,实际上产生了不同的会话,相当于使用两个浏览器打开了不同的页面。

session可以方便的维持一个会话,而且不用担心cookies的问题。

示例如下:


import requests

requests.get(url='https://httpbin.org/cookies/set/number/123465789' )
r = requests.get(url='https://httpbin.org/cookies' )
print(r.text)

对一个测试网站进行请求,设置了一个名为number,值为123456789的cookie,然后又请求此网址,尝试获取其cookies。

运行结果并没有抓取其cookie:

{
	 "cookies": {}
}

使用Session尝试一下:


import requests

s = requests.Session()
s.get(url='https://httpbin.org/cookies/set/number/123465789' )
r = s.get(url='https://httpbin.org/cookies' )
print(r.text)

运行结果成功获取cookies

	{
    "cookies": {
    "number": "123465789"
           }
	}

(4)SSL证书验证:

请求https站点,避免出现SSLError错误。将requests.get()方法中的verify参数设置为Fales即可解决此问题。

requests.get(url='',verify=Fales)

(5)代理设置:proxies参数

import requests

proxies = {
    
    
	'http' : '代理网址1'
	'https' : '代理网址2'
}
requests.get('url' ,proxies=proxies)

(6)身份验证:auth参数

访问网站时,可能会进行身份验证。
此时可以使用requests自带的身份验证功能:

import requests
from requests.auth import HTTPBasicAuth

r = requests.get('url' , auth =  HTTPBasicAuth('username' , 'password'))

参考并推荐书籍:https://cuiqingcai.com/5052.html

猜你喜欢

转载自blog.csdn.net/qq_45742511/article/details/112095845