Requests

2018-12-30  本文已影响0人  咻咻咻滴赵大妞

requests的简单使用

1.最基本的GET请求可以直接用get方法

response = requests.get(url)

2.添加headsers和查询参数

import requests

kw = {'wd':'长城'}

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
}

# params 接收一个字典或者字符串的查询参数,
# 字典类型自动转换为url编码,不需要urlencode()
response = requests.get(
    "http://www.baidu.com/s?",
    params = kw, 
    headers = headers
)
print(response.text)

基本POST请求(data参数)

1.最基本post方法

response = requests.post(url=url, data = data)

url:post请求的目标url
data:post请求的表单数据

设置代理(proxies参数)

如果需要使用代理,你可以通过为任意请求方法提供 proxies 参数来配置单个请求:

import requests

# 根据协议类型,选择不同的代理
proxies = {
    "http": "http://12.34.56.79:9527",
    "https": "http://12.34.56.79:9527",
}

response = requests.get(
    "http://www.baidu.com", 
    proxies = proxies
)
print(response.text)

Cookies

import requests

response = requests.get("https://www.douban.com/")

# 7\. 返回CookieJar对象:
cookiejar = response.cookies

# 8\. 将CookieJar转为字典:
cookiedict = requests.utils.dict_from_cookiejar(
    cookiejar
)

print (cookiejar)

print (cookiedict)

然后可以使用cookidict继续发起请求,登录成功后访问个人主页,能够成功获取到个人主页信息,说明确实保存了cookie

session

在 requests 里,session对象是一个非常常用的对象,这个对象代表一次用户会话:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开。

会话能让我们在跨请求时候保持某些参数,比如在同一个 Session 实例发出的所有请求之间保持 cookie 。

#requests.session(): 维持会话,可以让我们在跨请求时,保存某些参数
import requests

#实例化session
session = requests.session()

#目标url
url = 'https://www.douban.com/accounts/login'

form_data = {
    'source': 'index_nav',
    'form_email': '18518753265',
    'form_password': 'ljh12345678',
    'captcha-solution': 'purpose',
    'captcha-id': 'TaXhQ6a7ylku0Ylt4WfRbDPe:en'
}

#设置请求头
req_header = {
    'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
}

#使用session发起请求
response = session.post(url,data=form_data,headers= req_header)

if response.status_code == 200:
    #访问个人主页
    url = 'https://www.douban.com/people/175417123/'
    response = session.get(url,headers=req_header)
    if response.status_code == 200:
        with open('douban3.html','w',encoding='utf-8') as file:
            file.write(response.text)

上一篇 下一篇

猜你喜欢

热点阅读