python爬虫----requests模块的使用 - 前端笔记-#requests模块 #################...

学习笔记

点滴记忆
回忆过往
首页>> web后端 >>python爬虫----requests模块的使用 - 前端笔记
#            requests模块

#########################################################

#requests模块是什么
它是一个Python第三方库,处理URL资源特别方便。也是处理发送请求的

#########################################################

# requests模块的安装
pip / pip3 install requests

#########################################################

# requests模块发送get请求

import requests    # 引入requests模块
url = 'https://blog.dbsgw.cn/'  # 目标网址
= requests.get(url)     # 通过requests发送get请求
print(r.text)      #通过 text方法   在 r结果 中获取请求结果的内容

#########################################################

# 处理响应对象的乱码时候

因为有时候在通过 text方法获取内容会产生乱码

 response.text
   类型:str
   解码类型: requests模块自动根据HTTP 头部对响应的编码作出有根据的推测,推测的文本编码
 response.content
   类型:bytes
   解码类型: 没有指定
 response.content.decode() 方法编码utf-8,也可以是r.content.decode('gbk')

import requests    # 引入requests模块
url = 'https://blog.dbsgw.cn/'  # 目标网址
= requests.get(url)     # 通过requests发送get请求
print(r.content.decode())      #通过 text方法   在 r结果中获取请求结果的内容

#########################################################

#  response响应对象的其它常用属性或方法
r.url 响应的url;有时候响应的url和请求的url并不一致
r.status_code 响应状态码
r.request.headers 响应对应的请求头
r.headers 响应头
r.request._cookies 响应对应请求的cookie;返回cookieJar类型
r.cookies 响应的cookie(经过了set-cookie动作;返回cookieJar类型
r.json()自动将json字符串类型的响应内容转换为python对象(dict or list

import requests  # 引入requests模块
url = 'https://blog.dbsgw.cn/'  # 目标网址
= requests.get(url)  # 通过requests发送get请求
print(r.url)  # 获取响应url
print(r.status_code)  # 获取响应状态码的
print(r.request.headers)  # 获取对应的请求头的
print(r.headers)  # 获取响应头的
print(r.request._cookies)  # 响应对应请求的cookie;返回cookieJar类型
print(r.cookies)  # 响应的cookie
print(r.json())  # 自动将json字符串类型的响应内容转换为python对象(dict or list) 必须是json字符串不然无法转换

#########################################################

# 发送带header的请求
模仿浏览器的信息发送请求 :有些网站会有反爬虫机制就会检测 User-Agent(客户端的操作系统以及浏览器的信息)  requests模式是 python的信息

import requests
url = 'https://blog.dbsgw.cn/'  # 目标网址
headers = {
  "User-Agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36" # 模仿浏览器信息
}
= requests.get(url, headers=headers) # 发送请求
print(r.content.decode()) # 打印输出

#########################################################

# 发送带参数的请求 2种方法

# 1.url带参数
import requests  #引入模块
url = 'https://blog.dbsgw.cn/index.php?keyword=vuex'  # 目标网址
headers = {
  "User-Agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36" # 模仿浏览器信息
}
= requests.get(url,headers=headers) # 发送请求
print(r.content.decode()) #打印输出

#########################################################
# 2.params携带参数
import requests # 引入requests模块
url = 'https://blog.dbsgw.cn/index.php?' #请求地址--- 保留?
headers = {
  "User-Agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"  #模仿浏览器
}
params = {
  "keyword""vuex"   # 使用params携带参数
}
= requests.get(url, headers=headers, params=params) #发送请求
print(r.content.decode()) #打印输出

#########################################################

# headers参数中携带cookie

import requests  # 引入模块
url = 'https://blog.dbsgw.cn/admin/'  # 目标地址
headers = {
  "user-agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
}
# 此时的cookie_list 还需要分成 键值对以(以 = 分键值对, ; 结束)   cookie_list内容是我登录,后台的真实cookie
cookie_list = "em_advset=none; UM_distinctid=16f55320a2f217-0c3464152e904e-7711a3e-144000-16f55320a30162; Hm_lvt_70546d661cadce41b9173a040b7f077e=1581488650,1581922039; OUTFOX_SEARCH_USER_ID_NCOO=1236953064.5163746; Hm_lvt_30f7cf9424f966a7bb75b6095eee923c=1585277410,1585277415,1585399540,1585627352; Hm_lvt_fc5cb0ed53567ad9178d5cd0d38fc309=1585978509,1585979339,1585987393,1585991540; PHPSESSID=fo0gb5mfd78u5oip27vn37nj90; EM_AUTHCOOKIE_95yUDyuGoTu7WYejbLXmH8m6O630lMsd=admin%7C%7Ca7e91e464d86db572e6e588ef9dd5815; EM_TOKENCOOKIE_a1cfeb2a2e97e6b24a8f1ca927a73385=ba374f69f0f62e8099c89dd1d149d2d1; CNZZDATA1278526282=248400771-1578397714-https%253A%252F%252Fblog.dbsgw.cn%252F%7C1586014666; Hm_lpvt_fc5cb0ed53567ad9178d5cd0d38fc309=1586015571"
cookies = {cookies.split('=')[0]:cookies.split('=')[1for cookies in cookie_list.split('; ')} #推导式的分隔
= requests.get(url, headers=headers, cookies=cookies)  # 发送请求
print(r.content.decode())  # 打印输出  的标题是 管理中----前端笔记说明我们成功的通过cookies 进去后台了

#########################################################

# 超时参数timeout的使用
在爬虫中,一个请求很久没有结果,就会让整个项目的效率变得非常低,这个时候我们就需要对请求进行强制要求,让他必须在特定的时间内返回结果,否则就报错。
import requests
url = 'http://www.google.com/'
headers = {
  "user-agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
}
= requests.get(url, headers=headers, timeout=3# timeout=3 超过3秒自动报错
print(r.content.decode()) # 打印输出

#########################################################

# proxy代理参数的使用  ------ 反正我是没有代理成功过,我查了服务器访问ip 根本没有代理成功我也不知道是不是ip的问题还是我配置的问题
proxy代理参数通过指定代理ip,让代理ip对应的正向代理服务器转发我们发送的请求,
代理ip 分: 透明代理,匿名代理,高匿代理

import requests

url = 'https://blog.dbsgw.cn/'
headers = {
  "user-agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
}
proxies = {
  "http""http://12.34.56.79:9527"
}
= requests.get(url, headers=headers, proxies=proxies)
print(r.content.decode())  # 打印输出

#########################################################

# 使用verify参数忽略CA证书
该网站的CA证书没有经过【受信任的根证书颁发机构】的认证 ,就是证书不是官网认证的sll证书

import requests
url = 'https://sam.huat.edu.cn:8443/selfservice/'
headers = {
  "user-agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
}
= requests.get(url, headers=headers, verify=False)  # verify设置为false 默认跳过  不信任证书
print(r.content.decode('gbk'))


#########################################################


# 发送post请求  登录 前端博客
dada作为post传值的参数
import requests
url = 'https://blog.dbsgw.cn/admin/index.php?action=login'
headers = {
  "user-agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
}
data = {
  "user""****",  # 账户
  "pw""****"    #密码
}
= requests.post(url, headers=headers, data=data)  #发送请求
print(r.content.decode()) #打印输出


#########################################################

# 使用session登录前端笔记   实现不用每次都带cookie

import requests
url = 'https://blog.dbsgw.cn/admin/index.php?action=login'
headers = {
  "user-agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
}
session = requests.session()  # 初始化session
data = {
  "user"input('请输入账号'),
  "pw"input('请输入密码')
}
= session.post(url, headers=headers, data=data) #登录
= session.get('https://blog.dbsgw.cn/admin/tag.php',headers=headers) #登录后访问其他页面
print(r.content.decode())

#########################################################


# 使用requests.session来完成github登陆,并获取需要登陆后才能访问的页面
自动处理cookie,即下一次请求会带上前一次的cookie

import requests
import re

# 构造请求头字典
headers = {
    'User-Agent''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36',
}

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

# 访问登陆页获取登陆请求所需参数
response = session.get('https://github.com/login'headers=headers)
authenticity_token = re.search('name="authenticity_token" value="(.*?)" />', response.text).group(1# 使用正则获取登陆请求所需参数

# 构造登陆请求参数字典
data = {
    'commit''Sign in'# 固定值
    'utf8''✓'# 固定值
    'authenticity_token': authenticity_token, # 该参数在登陆页的响应内容中
    'login'input('输入github账号:'),
    'password'input('输入github账号:')
}

# 发送登陆请求(无需关注本次请求的响应)
session.post('https://github.com/session'headers=headers, data=data)

# 打印需要登陆后才能访问的页面
response = session.get('https://github.com/1596930226'headers=headers)
print(response.content.decode())


×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

打赏作者
版权所有,转载注意明处:前端笔记 » python爬虫----requests模块的使用

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)