Requests爬虫

Requests

Requests 继承了urllib的所有特性,并且API使用更加方便,可以简化我们的代码

  • 如何使用Requests

GET

  • 1 导入 import requests
  • 2 发起请求
url = '目标url地址'

# 设置请求头
headers = {
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}

#发起请求   接收响应
response = requests.get(url=url,params=None,headers=headers,verify=False)

requests请求参数

method: 设置请求方式 get、post、delete
url: 目标url
params: 跟的是get请求url地址后?后面拼接的参数
data: (optional) Dictionary, post请求的参数.
headers: (optional) Dictionary 设置请求头.
cookies: (optional) Dict or CookieJar object 设置用户的cookies信息.
files: (optional) Dictionary 文件上传(post).
auth: Auth 认证.
timeout: 设置请求的超时时间
allow_redirects: 设置是否允许重定向,默认是允许的
proxies: (optional) Dictionary 设置代理.
verify: (optional) Either a boolean, Defaults to True.
#忽略证书认证,则设置为False

响应结果

response.text > 页面源码
response.status_code > 响应状态码
response.headers > 响应头
response.request.headers > 获取请求头
response.content > 获取页面的二进制数据

POST

  • 1 设置表单参数
form_data = {
    'username':'......',
    'password':'......',
}
  • 发起请求
url = '目标url地址'

headers = {
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}

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

#------如果是json数据可以调用json方法,将json字符串转换为python数据类型------
response.json()['key']

  • 文件上传
#测试url
url = 'https://httpbin.org/post'

#读取本地文件
files = {'file':open('page.html','r',encoding='gbk')}

response = requests.post(url=url,files=files,headers=headers)

if response.status_code == 200:
    print('文件上传成功')
    print(response.text)
  • 获取cookies
#  response : 页面响应结果
cookies = response.cookies

# 将cookie存在字典中
cookies_dict = {}
for cookie in cookies:
    cookies_dict[cookie.name] = cookie.value
    # print(cookie.name,cookie.value)
print(cookies_dict)

#dict_from_cookiejar:把RequestsCookieJar对象转成字典
cookies_dict2 = requests.utils.dict_from_cookiejar(cookies)
print(cookies_dict2)

####设置cookies##########
#方式一:从浏览器获取cookies,放在请求的头部
#方式二,通过设置请求的cookies参数,
#cookies: (optional) Dict or CookieJar object
response = requests.get(
    url=url,headers=headers,
    cookies=cookies_dict2
)
print(response.status_code)
print('设置cookies后的请求头部',response.headers)
  • session
  • 在requests请求中,我们往往需要让上下请求保持联系,这时我们就需要使用session
#实例化session()对象
session = requests.session()

headers = {
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
response = session.get('http://www.baidu.com/',headers=headers)

print(response.headers)
print(session.cookies) #session.cookies 保存的是服务器,返回的cookies信息


#当session.cookies有用户信息之后,我们再使用session.get()或者session.post()
#发起请求时,就会自动携带cookies等信息
response = session.get('http://www.baidu.com/',headers=headers)


# 一般情况下,我们会再模拟登录时用到request.session,先完成登录,
# 然后使用session发起请求
  • 设置代理
proxies = {
    'http':'代理',
    'http':'代理',
}

#proxies(设置代理参数): (optional) Dictionary
response = requests.get(url=url,params=None,
                        headers=headers,
                        proxies=proxies)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章