爬爬爬——qq模拟登录,古诗文网模拟登录并爬取内容(cookie)

news2024/11/26 0:28:01

cookie——可以理解为,记录为登录状态。如果在登录一个网站之后,想拿到信息发现404了,就是没有加cookie在这个header里。

下图加了cookie和没有加的对比(我是用了selenuim自动化登录的):

下面是加了的

这个就进入了。


下面是古诗文网的登录和获取。

import time

import ddddocr
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By

zhanghao = "19894604325"
mima = "lxh258258"
url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'

wd = webdriver.Edge()
wd.implicitly_wait(10)

wd.get(url)
time.sleep(1)

wd.find_element(By.CSS_SELECTOR,'#email').send_keys(f'{zhanghao}')
wd.find_element(By.CSS_SELECTOR,'#pwd').send_keys(f'{mima}')

#验证码
img = wd.find_element(By.CSS_SELECTOR,'#imgCode')
#img.screenshot_as_png
with open('gushiwen.png',mode='wb') as f:
    f.write(img.screenshot_as_png)
#分析数据
ocr = ddddocr.DdddOcr() #ocr实例对象
code_text = ocr.classification(img.screenshot_as_png)

wd.find_element(By.CSS_SELECTOR,'#code').send_keys(f"{code_text}")
wd.find_element(By.CSS_SELECTOR,'#denglu').click()
time.sleep(6)
#爬取
url2 = 'https://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/121.0.0.0 Safari/537.36 Edg/121.0.0.0',
'Cookie':
'login=flase; ticketStr=202945020%7cgQEZ8TwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyUFlublFubGVkN2kxLTlpUE5CMTMAAgSJRcxlAwQAjScA; ASP.NET_SessionId=o42gt4a0v1fyinfcy1y4w0k5; codeyzgswso=6501cb6880be4877; gsw2017user=5612449%7cCB284E64EB2D7536EBF09392CC9AE0CF%7c2000%2f1%2f1%7c2000%2f1%2f1; login=flase; wxopenid=defoaltid; gswZhanghao=19894604325; gswPhone=19894604325; idsShiwen2017=%2c102533%2c109816%2c53504%2c12578%2c'


}
response = requests.get(url2,headers=headers).text
with open('guhsi.html','w',encoding='utf-8') as fp:
    fp.write(response)
elem = wd.find_element(By.CSS_SELECTOR,'a[style=" float:left;"]')
print(f"\n{elem.text}")

wd.quit()

这里值得一提的,写入文件的方式。

1.我以前使用,这个形式。上面的和这个不同,总结一下,上面的更容易记忆,但都一样。

f = open('文件名.txt', mode='a', encoding='utf-8')
        f.write(Mcontent)

2.验证码部分用了ddddcor

#验证码
img = wd.find_element(By.CSS_SELECTOR,'#imgCode')
#img.screenshot_as_png
with open('gushiwen.png',mode='wb') as f:
    f.write(img.screenshot_as_png)
#分析数据
ocr = ddddocr.DdddOcr() #ocr实例对象
code_text = ocr.classification(img.screenshot_as_png)

将图片储存然后识别 


============qq登录==========不完善

到最后还有手机号验证码,给我搞懵了----------------------验证码还是用“云打码”(我不会用嘿嘿嘿!以后在仔细研究一下)

import time
import ddddocr
from selenium import webdriver
from selenium.webdriver.common.by import By

num = '2488220557'
password = ' '
url = 'https://www.baidu.com/'

wd = webdriver.Edge()
#饶过检测
wd.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",
                   {"source":"""Object.defineProperty(navigator,'webdriver',{get:()=>undefined})"""})
wd.implicitly_wait(5)

wd.get(url)

mainWindow = wd.current_window_handle
#wd.switch_to.window(mainWindow)
element = wd.find_element(By.CSS_SELECTOR,'#kw')
time.sleep(1)
element.send_keys('qq\n')

element2 = wd.find_element(By.CSS_SELECTOR,'.c-container')
element3 = element2.find_element(By.CSS_SELECTOR,'a[target="_blank"]').click()
time.sleep(2)

for handle in wd.window_handles:
    wd.switch_to.window(handle)
    print(wd.title)
    if '轻松' in wd.title:
        break

elements = wd.find_element(By.NAME,'im.qq.com.login')
elements.click()
time.sleep(1)

wd.switch_to.frame(wd.find_element(By.CSS_SELECTOR,'iframe[name="frame-login"]'))
time.sleep(1)
wd.find_element(By.CSS_SELECTOR,'#switcher_plogin').click()
time.sleep(1)
element4 = wd.find_element(By.CSS_SELECTOR,'#u').send_keys(f'{num}')
element5 = wd.find_element(By.CSS_SELECTOR,'#p').send_keys(f'{password}')
time.sleep(2)
wd.find_element(By.CSS_SELECTOR,'#login_button').click()
time.sleep(100)

 1.

2.

3.

4.

5.

注意这里切换了frame


这里用了这几天学到基本所有,因为CSS的强大所以,就全用了CSS。

1.这是一个绕过检测的代码,可以没有用,可以不用写(等待返回要写哦)

#饶过检测
wd.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",
                   {"source":"""Object.defineProperty(navigator,'webdriver',{get:()=>undefined})"""})
wd.implicitly_wait(5)

2.发起请求,并切储存当前窗口(没啥意义,就是为了复习知识点)

wd.get(url)

mainWindow = wd.current_window_handle

3.这个特别值得说:

浏览器切换窗口,你看到切换了但是这个‘wd’是没有切换到,你看到的这个网页的,所以要切换,注意!!!!!!!!!!!!!!!!!!!!!!

如果你觉得你得的没有问题,看是不是浏览器窗口没切换,还是frame窗口没切换!!!

for handle in wd.window_handles:
    wd.switch_to.window(handle)
    print(wd.title)
    if '轻松' in wd.title:
        break

4.切换为frame窗口(注意!!!)

wd.switch_to.frame(wd.find_element(By.CSS_SELECTOR,'iframe[name="frame-login"]'))
time.sleep(1)

没啥了,就是验证码了,b站有好多视频,其实只要找‘云打码’这个网站怎么用,就行。这个平台很全面。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据分析案例-基于亚马逊智能产品评论的探索性数据分析

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

FreeRTOS 调度算法简述

优先级抢占式调度 本章的示例程序已经演示了 FreeRTOS 在什么时候以及以什么方式选择一个什么 样的任务来执行。  每个任务都赋予了一个优先级。  每个任务都可以存在于一个或多个状态。  在任何时候都只有一个任务可以处于运行状态。  调度器总是在所有处于就…

华为23年9月笔试原题,巨详细题解,附有LeetCode测试链接

文章目录 前言思路主要思路关于f函数的剖析Code就到这,铁子们下期见!!!! 前言 铁子们好啊!今天阿辉又给大家来更新新一道好题,下面链接是23年9月27的华为笔试原题,LeetCode上面的ha…

VueCLI核心知识3:全局事件总线、消息订阅与发布

这两种方式都可以实现任意两个组件之间的通信 1 全局事件总线 1.安装全局事件总线 import Vue from vue import App from ./App.vueVue.config.productionTip false/* 1.第一种写法 */ // const Demo Vue.extend({}) // const d new Demo()// Vue.prototype.x d // 把Dem…

Python算法探索:从经典到现代(三)

一、引言 随着信息技术的飞速发展,数据已经成为现代社会不可或缺的资源。Python,作为数据处理和分析的利器,为我们提供了大量强大的库和工具,用于从经典到现代的各种算法探索。本文将带你领略Python在算法领域的魅力,从…

OJ刷题:猜名次和找凶手【建议收藏点赞】

目录 1. 猜名次2. 找凶手 1. 猜名次 代码实现&#xff1a; #include <stdio.h>int main() {int a 0;int b 0;int c 0;int d 0;int e 0;for (a 1; a < 5; a){for (b 1; b < 5; b){for (c 1; c < 5; c){for (d 1; d < 5; d){for (e 1; e < 5; e)…

Windows 版Oracle 数据库(安装)详细过程

首先到官网上去下载oracle64位的安装程序 第一步&#xff1a;将两个datebase文件夹解压到同一目录中。 当下载完成后,它里面是两个文件夹 win64_11gR2_database_1of2, win64_11gR2_database_2of2,我们需要把其中的一个database文件夹整合在一起(复制一个database文件夹到另一…

寒假作业:2024/2/14

作业1&#xff1a;编程实现二维数组的杨辉三角 代码&#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) {int n;printf("please enter n:");scanf("%d",&n);int a…

Nvm安装(windows版)

1、nvm 是什么 &#xff08;1&#xff09;nvm(Node.js version manager) 是一个命令行应用&#xff0c;可以协助您快速地 更新、安装、使用、卸载 本机的全局 node.js 版本。 &#xff08;2&#xff09;有时候&#xff0c;我们可能同时在进行多个项目开发&#xff0c;而多个项…

Netty Review - 服务端channel注册流程源码解析

文章目录 PreNetty主从Reactor线程模型服务端channel注册流程源码解读入口 serverBootstrap.bind(port)执行队列中的任务 &#xff1a; AbstractUnsafe#register0注册 doRegister() 源码流程图 Pre Netty Review - ServerBootstrap源码解析 Netty Review - NioServerSocketCh…

深入探索Pandas读写XML文件的完整指南与实战read_xml、to_xml【第79篇—读写XML文件】

深入探索Pandas读写XML文件的完整指南与实战read_xml、to_xml XML&#xff08;eXtensible Markup Language&#xff09;是一种常见的数据交换格式&#xff0c;广泛应用于各种应用程序和领域。在数据处理中&#xff0c;Pandas是一个强大的工具&#xff0c;它提供了read_xml和to…

MySQL-----函数篇

目录 ▶ 字符串函数 ▶ 数值函数 ▶ 日期函数 ▶ 流程函数 ▶ 简介 函数是指一段可以直接被另一段程序调用的程序或代码。 ▶ 字符串函数 函数描述实例ASCII(s)返回字符串 s 的第一个字符的 ASCII 码。 返回 CustomerName 字段第一个字母的 ASCII 码&#xff1a; S…

C++的进阶泛型编程学习(1):函数模板的基本概念和机制

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、模板1.1 模板的概念1.1.1 形象的解释&#xff1a;模板就是通用的模具&#xff0c;目的是提高通用性1.1.1 模板的特点&#xff1a;1.1.2 综述模板的作用 1.2…

【从Python基础到深度学习】7. 使用scp命令实现主机间通讯

一、生成 SSH 密钥对 ssh-keygen 是一个用于生成 SSH 密钥对的命令行工具&#xff0c;用于身份验证和加密通信 ssh-keygen 二、将本地主机上的 SSH 公钥添加到远程主机 ssh-copy-id 命令用于将本地主机上的 SSH 公钥添加到远程主机上的 authorized_keys 文件中&#xff0c;…

反无人机系统技术分析,无人机反制技术理论基础,无人机技术详解

近年来&#xff0c;经过大疆、parrot、3d robotics等公司不断的努力&#xff0c;具有强大功能的消费级无人机价格不断降低&#xff0c;操作简便性不断提高&#xff0c;无人机正快速地从尖端的军用设备转入大众市场&#xff0c;成为普通民众手中的玩具。 然而&#xff0c;随着消…

高斯模糊滤镜

高斯模糊滤镜 import cv2# 读取图像 image cv2.imread(1.jpg)# 高斯模糊滤镜 blurred cv2.GaussianBlur(image, (15, 15), 0)# 保存处理后的图像 cv2.imwrite(blurred_image.jpg, blurred)# 显示原始图像和处理后的图像 cv2.imshow(Original Image, image) cv2.imshow(Blurre…

TiDB in 2023, 一次简单的回顾丨PingCAP 唐刘

2023 年已经过去&#xff0c;TiDB 经过了一年的迭代&#xff0c;又往前进步了一点点&#xff0c;我们非常自豪的看到&#xff0c;TiDB 正在不断地帮助我们的客户成功&#xff0c;包括但不限于&#xff1a; ○ 首个云原生、分布式、全栈国产化银行核心业务系统投产上线丨TiDB …

【日志框架】

日志打印 建议用{}占位而不是字符串拼接打日志前先判断日志级别是否可用&#xff1a; 先根据等级过滤规则再决定写不写&#xff1b;先往一个管道写了内容&#xff0c;但再经等级过滤丢弃&#xff0c;徒增开销。 日志框架 Slf4J Slf4J 不是底层日志框架&#xff0c;只是门面…

JavaScript中解锁Map和Set的力量

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》 ​ ​ ✨ 前言 ES6带来了Map和Set两个新的数据结构 - 它们分别用于存放键值对和唯一值。Map和Set提供了更…

第十九篇【传奇开心果系列】Python的OpenCV库技术点案例示例:文字识别与OCR

传奇开心果短博文系列 系列短博文目录Python的OpenCV库技术点案例示例系列 短博文目录前言一、OpenCV 文字识别介绍二、图像预处理示例代码三、文字区域检测示例代码四、文字识别示例代码五、文字后处理示例代码六、OpenCV结合Tesseract OCR库实现文字识别示例代码七、OpenCV结…