python爬虫--------requests案列(二十七天)

兄弟姐们·,大家好哇!我是喔的嘛呀。今天我们一起来学习requests案列。

一、requests____cookie登录古诗文网

1、首先想要模拟登录,就必须要获取登录表单数据

登录完之后点f12,然后点击network,最上面那个就是登录接口,登录表单数据就在里面

点登录接口,然后在点击payload可以看到有一个form data,里面的数据就是登录表单数据,爬虫模拟登陆就是构造表单数据实现登录。一定要合法合规。(因为涉及自己的账号密码我就不点开了)

里面的数据就是这些

'__VIEWSTATE': viewstate,
'__VIEWSTATEGENERATOR': viewstategenerator,
'from': '<http://so.gushiwen.cn/user/collect.aspx>',
'email': 'your_email@example.com',
'pwd': 'your_password',
'code': code_name,
'denglu': '登录',

很多小伙伴不知道'__VIEWSTATE'、'__VIEWSTATEGENERATOR'这两个参数是什么意思,给大家说一哈。

在很多Web页面中,特别是使用ASP.NET开发的页面中,会使用隐藏域(hidden input)来存储一些页面状态或者其他信息,这些信息对于页面的正常操作很重要,但用户是看不到的。

在这个例子中,**__VIEWSTATE__VIEWSTATEGENERATOR**是两个隐藏域,它们存储了关于页面状态的信息,而且在每次请求页面时都会动态生成和改变。所以,在登录的时候,我们需要获取这两个隐藏域的值,并将它们包含在POST请求的数据中,以确保我们的请求是有效的。

2、第二个主要的地方时我们登录时候需要输入验证码,我们需要拿到正确的验证码地址并把验证码图片爬取下来

img 的id为imgCode 然后我们就可以使用BeautifulSoup解析

3、根据分析写出代码

(1)导入**requestsBeautifulSoup**库。

import requests
from bs4 import BeautifulSoup

(2)定义登录页面的URL和请求头部信息,模拟浏览器请求。

pythonCopy code
login_url = '<https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx>'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}

(3)创建会话对象**session**,用于保持会话状态。

session = requests.session()

(4)发送GET请求获取登录页面的HTML源码,将响应内容保存在**content**变量中。

response = session.get(url=login_url, headers=headers)
content = response.text

(5)使用BeautifulSoup解析HTML源码,获取隐藏域**__VIEWSTATE__VIEWSTATEGENERATOR**的值,以及验证码图片的URL。

soup = BeautifulSoup(content, 'lxml')
viewstate = soup.select_one('#__VIEWSTATE')['value']
viewstategenerator = soup.select_one('#__VIEWSTATEGENERATOR')['value']
code_url = '<https://so.gushiwen.cn>' + soup.select_one('#imgCode')['src']

(6)拼接验证码图片的完整URL,并发送GET请求获取验证码图片的内容,将内容保存到本地文件**code.jpg**中。


response_code = session.get(code_url)
with open('code.jpg', 'wb') as fp:fp.write(response_code.content)

(7)用户手动输入验证码。


code_name = input('请输入验证码: ')

(8)构造登录表单数据,包括**__VIEWSTATE__VIEWSTATEGENERATORfromemailpwdcodedenglu**字段。


data_post = {'__VIEWSTATE': viewstate,'__VIEWSTATEGENERATOR': viewstategenerator,'from': '<http://so.gushiwen.cn/user/collect.aspx>','email': 'your_email@example.com','pwd': 'your_password','code': code_name,'denglu': '登录',
}

(9)发送POST请求登录,将响应内容保存在**content_post**变量中。

response_post = session.post(url=login_url, headers=headers, data=data_post)
content_post = response_post.text

(10)将登录后的响应内容保存到本地HTML文件**gushiwen.html**中。

with open('gushiwen.html', 'w', encoding='utf-8') as fp:fp.write(content_post)

(11)完整代码

import requests
from bs4 import BeautifulSoup# 登录页面的URL
login_url = '<https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx>'# 请求头部信息,模拟浏览器请求
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36'
}# 创建会话对象,保持会话状态
session = requests.session()# 发送GET请求获取登录页面的HTML源码
response = session.get(url=login_url, headers=headers)
content = response.text# 使用BeautifulSoup解析HTML源码,获取隐藏域__VIEWSTATE和__VIEWSTATEGENERATOR的值,以及验证码图片的URL
soup = BeautifulSoup(content, 'lxml')
viewstate = soup.select('#__VIEWSTATE')[0].attrs.get('value')
viewstategenerator = soup.select('#__VIEWSTATEGENERATOR')[0].attrs.get('value')
code = soup.select('#imgCode')[0].attrs.get('src')
code_url = '<https://so.gushiwen.cn>' + code# 获取验证码图片,并保存到本地
response_code = session.get(code_url)
content_code = response_code.content
with open('code.jpg', 'wb') as fp:fp.write(content_code)# 用户输入验证码
code_name = input('请输入验证码')# 构造登录表单数据data_post = {'__VIEWSTATE': viewstate,'__VIEWSTATEGENERATOR': viewstategenerator,'from': '<http://so.gushiwen.cn/user/collect.aspx>','email': 'your_email@example.com','pwd': 'your_password','code': code_name,'denglu': '登录',
}# 发送POST请求登录
response_post = session.post(url=login_url, headers=headers, data=data_post)
content_post = response_post.text# 将登录后的响应内容保存到本地HTML文件中
with open('gushiwen.html', 'w', encoding='utf-8') as fp:fp.write(content_post)

这段代码实现了模拟登录古诗文网站的功能,并将登录后的响应保存到本地文件中。请注意,其中的邮箱和密码等敏感信息应当替换为真实的信息,并且在实际使用时,需要遵守网站的相关规定和法律法规。

4、结果展示

运行之后找到code.jpg输入验证码

找到爬取下来的gushiwen.html点上面的浏览器标识

成功

失败

好了今天的学习就到这里了,希望兄弟姐妹能够天天开心,拜拜啦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/638198.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解Java中的五种IO模型

文章目录 前言1、内核空间和用户空间2、用户态和内核态3、上下文切换4、虚拟内存5、DMA技术6、传统 IO 的执行流程 一、阻塞IO模型二、非阻塞IO模型三、IO多路复用模型1、IO多路复用之select2、IO多路复用之epoll3、总结select、poll、epoll的区别 四、IO模型之信号驱动模型五、…

VUE运行找不到pinia模块

当我们的VUE运行时报错Module not found: Error: Cant resolve pinia in时 当我们出现这个错误时 可能是 没有pinia模块 此时我们之要下载一下这个模块就可以了 npm install pinia

RattbitMQ安装

1.RabbitMQ是什么? RabbitMQ是消息队列的一种&#xff0c;生态好&#xff0c;好学习&#xff0c;易于理解&#xff0c;时效性强,支持很多不同语言的客户端,扩展性、可用性都很不错。学习性价比非常高的消息队列&#xff0c;适用于绝大多数中小规模分布式系统。 今天先来简单讲…

【webrtc】m114自己实现的PrioritizedPacketQueue及优先级处理

G:\CDN\WEBRTC-DEV\libwebrtc_build\src\modules\pacing\prioritized_packet_queue.h跟m98不同 :webrtc】m98 RoundRobinPacketQueue的优先级处理,m114直接使用taskqueue顺序处理了。甚至自己实现了优先级队列感觉简化了实现,更为清晰 易读,但是去掉了码率低就优先的逻辑。1…

ChatGPT基础(三) 让ChatGPT回答质量提高十倍的提示词模版

上篇文章介绍了ChatGPT使用提示词的一些方法策略和如何优化我们的提示词。这里呢&#xff0c;我介绍一下参照大佬的方法总结的一个提示词的一个用法的模板。使用这个模板之后&#xff0c;我们的提问和获得答案的效率和收集素材的完整度能提高很多。 首先我介绍一下这个模板&am…

R: 阿尔法α多样性计算和箱图制作,以及差异分析

# install.packages("vegan") library(vegan) library(ggplot2) library(ggpubr)setwd("xxx") # 使用read.table()函数读取数据 df <- read.table("xxx", header TRUE, row.names 1)# 转置数据框 df <- t(df)# 计算每个样品的香农多样性…

面试(06)————MySQL篇

目录 问题一&#xff1a;在MySQL中&#xff0c;如何定位慢查询&#xff1f; 方案一&#xff1a;开源工具 方案二&#xff1a;MySQL自带慢日志 模拟面试 问题二&#xff1a;这个SQL语句执行很慢&#xff0c;如何分析的呐&#xff1f; 模拟面试 问题三&#xff1a;了解过索引…

kali没有数字签名

一开始以为是国外源访问缓慢问题&#xff0c;更新国内源后依旧报错 解决方案&#xff1a; 你需要下载apt源对应的签名文件&#xff0c;并使用apt-key命令将其添加到系统中。例如&#xff0c;对于Kali的官方源&#xff0c;你可以使用以下命令下载并安装签名文件&#xff1a; …

Python图像处理【24】面部变形(face morphing)

面部变形 0. 前言1. 网格变形算法2. 实现面部变形小结系列链接 0. 前言 面部变形 (face morphing) 的目的是在计算图像中两个面部之间的平均值&#xff0c;它并不是计算两张图像的平均值&#xff0c;而是计算面部区域的平均值。可以将该过程分解为以下两步&#xff1a; 对齐两…

web渗透xxe漏洞

xxe xml external entity 外部实体注入&#xff0c;用户输入恶意 xml 被后台解析了恶意语句 owasptop10-- 不安全的配置 xml 是什么&#xff1f;&#xff1f; XML 指可扩展标记语言&#xff08; EXtensible Markup Language &#xff09;。 XML 是一种很像 HTML 的标记…

了解网卡、光猫、路由器

了解网卡、光猫、路由器 一、网卡二、光猫三、路由器四、光猫和路由器的联系和区别五、家庭正常上网的简单流程六、企业正常上网的简单流程 一、网卡 网卡&#xff1a;用来允许计算机在计算机网络上进行通讯的计算机硬件 一般来说&#xff0c;笔记本都有两种网卡&#xff0c;有…

【数值计算方法】 4.2 / Newton-Cotes公式

本质&#xff1a;具有等距节点的插值求积公式就是NC公式