4.1request进阶-初识反爬

1.模拟浏览器登陆

  1. 登录
  2. 得到cookie 值
  3. 带着cookie 去请求目标的 url
  4. 获取所需的内容

上述操作必须连贯起来,即获取到的cookie 信息必须在本次请求中去使用

💎💎💎在使用request模块的中的 get 或者 post 请求时。每次请求都视为一个新的请求,所以并不能满足上述的连贯,而 cookie 值在每次请求时都会随机生成,所以在通过一次请求得到的 cookie 值,并不能作为下一次请求的 cookie 参数使用。 💎💎💎

session 会话对象

session = request.session()

为解决上述问题,可以使用 session 会话对象,通过该对象,可以使请求都在一次访问中,既可以达到上述的连贯要求。

作用

  1. 可以进行请求发送
  2. 如果请求过程中产生了cookie ,则该cookie 值会自动存储,并将值携带在该 session 对象中。

2.需求:对小说网站个人书架内容进行爬取

import requests

if __name__ == '__main__':

    session = requests.session()
    url = "https://passport.17k.com/ck/user/login"

    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
    }
    data ={
        "loginName":"**********",
        "password":"**********"
    }
    session.post(url=url,data=data)
    resp = session.get("https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919")
    print(resp.json())

再对登录请求进行抓包时,请求包中并未出现目标的 url 通过分析,是没有打开 “保留日志”,可以通过打开这个开关,保留请求过程中的登录页面的 url 如下图所示:

image-20230128193843897

梨视频爬取

import requests
import os
if not os.path.exists("梨视频"):
    os.mkdir("梨视频")
contId = "https://pearvideo.com/video_1777816".split("_")[1]
url = "https://pearvideo.com/videoStatus.jsp?contId=1777816&mrd=0.6281112342338115"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36",
    "Referer": "https://pearvideo.com/video_1777816"
}
resp = requests.get(url=url,headers=headers)
systemtime = resp.json()['systemTime']
src_url= resp.json()['videoInfo']['videos']["srcUrl"]
src_url = src_url.replace(systemtime,f"cont-{contId}")
print(resp.json()['systemTime'])
print(resp.json()['videoInfo']['videos']["srcUrl"])
print(src_url)
resp2 = requests.get(url=src_url,headers=headers)
with open("梨视频/"+contId+".mp4","wb") as fp:
    fp.write(resp2.content)

resp.close()
resp2.close()



wb") as fp:
fp.write(resp2.content)

resp.close()
resp2.close()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值