爬虫——ajax和selenuim总结
为什么要写这个博客呢,这个代码前面其实都有,就是结束了。明天搞个qq登录,这个就结束了。
当然也会更新小说爬取,和百度翻译,百度小姐姐的爬取,的对比爬取。总结嘛!!!加油!!!
============================ajax====================================
,有时爬不到东西,可能是经过Ajax加载的数据,不是原始的HTML文档。
这样我们就要来模拟Ajax请求。
上实例:比如说我前几篇的,异步社区的爬取。
response = requests.get(url,headers=hearder,params=params).text
用的不光有url,headers,还有params,params中是对页数等的请求。

得到的是字典样子的数据,但是是字符串。
这就要用到json.loads(),来把字符串类型,转化为python的字典类型了
-----------------得到字典就是取值了。
同一个网站不用,params,就不会请求成功。

selenuim---用浏览器实现自动化(很强大的反爬工具)。
有些网站可能会有JavaScript动态加载数据,这种情况下,简单的获取初始HTML可能无法获取
这时就是用selenuim来模拟浏览器。
来复习一便selenuim自动化吧!!!-下一篇就是登录自动qq(目标)
第一篇代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException# 创建 WebDriver 对象,指明使用chrome浏览器驱动
wd = webdriver.Edge()# 调用WebDriver 对象的get方法 可以让浏览器打开指定网址
wd.get('https://www.baidu.com')
#寻找(异常的捕获)
try:element = wd.find_element(By.ID,'kw')element.send_keys('通讯')caozuo = wd.find_element(By.ID,'su')caozuo.click()#点击wd.quit()#退出input('等待回车键结束程序')except NoSuchElementException:print('不存在')
1.导库-最后一个是异常
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
2.这里try是如果抛出异常,就咋咋咋!
3. wd.find-element(),caozuo.click()-------------------------很重要
---------------------二-------------------------------
第二篇代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementExceptionurl = 'https://cdn2.byhy.net/files/selenium/sample1.html'
# 创建 WebDriver 对象,指明使用chrome浏览器驱动
wd = webdriver.Edge()# 调用WebDriver 对象的get方法 可以让浏览器打开指定网址
wd.get(url)
#根据ID查找
id_element = wd.find_element(By.ID,'searchtext')
id_element.send_keys('haha')
input("jix1")
#根据class的名字查找++
elements = wd.find_elements(By.CLASS_NAME,'plant')
for i in elements:print(i.text)
#根据标签查找
all_elements = wd.find_elements(By.TAG_NAME,'span')
for i in all_elements:print(i.text)
#退出
wd.quit()
很简单和第一个差不多,就是变成了,找一个(element),变成了找所有(elements)
----------------------------------三-----------------------------------------------
第三篇代码:
import timefrom selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementExceptionurl = 'https://im.qq.com/index/'wd = webdriver.Edge()
wd.implicitly_wait(10)wd.get(url)elements = wd.find_element(By.NAME,'im.qq.com.login')
elements.click()
time.sleep(1)
element = wd.find_element(By.ID,'bottom_qlogin')
time.sleep(1)
element2 = wd.find_element(By.ID,'switcher_plogin')
time.sleep(1)
element2.click()
time.sleep(2)
wd.quit()
这个也没啥就是-----wd.implicitly_wait(10)------因为爬取要时间,相当一个等待的代码。
------------------------------四-------------------------------
第四篇代码:
frame窗口转换
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementExceptionurl = "https://cdn2.byhy.net/files/selenium/sample2.html"
wd = webdriver.Edge()
wd.implicitly_wait(10)wd.get(url)
#切换到内frame里面
wd.switch_to.frame(wd.find_element(By.CSS_SELECTOR,'[src="sample1.html"]'))
elements = wd.find_elements(By.CSS_SELECTOR,'.plant')
for i in elements:print(i.get_attribute('outerHTML'))
#切换到外部
wd.switch_to.default_content()
wd.find_element(By.CSS_SELECTOR,'#outerbutton')
print(wd.find_element(By.CSS_SELECTOR,'#outerbutton').get_attribute('outerHTML'))
wd.find_element(By.CSS_SELECTOR,'#outerbutton').click()
time.sleep(2)
wd.quit()
input("jj")
这个很重要,加入了CSS,CSS也就是选择器,很强大。
1.wd.switch_to.frame(wd.find_element(By.CSS_SELECTOR,'[src="sample1.html"]'))
找么有‘ID’或者‘Class’的,并且进入frame窗口
2.print(i.get_attribute('outerHTML'))——这个将会打印标签在HTML是什么样的,打印出来就是什么样的
3.wd.switch_to.default_content()————返回到外部窗口
-------------------------------------------五-------------------------------------------
第五篇代码:
浏览器窗口的变化
import time
from selenium import webdriver
from selenium.webdriver.common.by import Byurl = "https://cdn2.byhy.net/files/selenium/sample3.html"
wd = webdriver.Edge()
wd.implicitly_wait(10)wd.get(url)element = wd.find_element(By.CSS_SELECTOR,'a')print(element.get_attribute('outerHTML'))
element.click()
#存储下来
mainWindow = wd.current_window_handletime.sleep(5)for handle in wd.window_handles:wd.switch_to.window(handle)print(wd.title)if '必应' in wd.title:breakwd.find_element(By.CSS_SELECTOR,'#sb_form_q').send_keys("hahahah")
time.sleep(1)
wd.find_element(By.CSS_SELECTOR,'#search_icon').click()time.sleep(5)
#返回窗口
wd.switch_to.window(mainWindow)wd.find_element(By.CSS_SELECTOR,'button').click()
wd.find_element(By.CSS_SELECTOR,'button').click()
time.sleep(5)wd.quit()
1.mainWindow = wd.current_window_handle-这个很有必要,就是存储当前窗口,以便返回。
2.
for handle in wd.window_handles:wd.switch_to.window(handle)print(wd.title)if '必应' in wd.title:break
在目前浏览器窗口找,有必应两个字的窗口。并转到
为什么要写这个博客呢,这个代码前面其实都有,就是结束了。明天搞个qq登录,这个就结束了。
当然也会更新小说爬取,和百度翻译,百度小姐姐的爬取,的对比爬取。总结嘛!!!加油!!!
相关文章:
爬虫——ajax和selenuim总结
为什么要写这个博客呢,这个代码前面其实都有,就是结束了。明天搞个qq登录,这个就结束了。 当然也会更新小说爬取,和百度翻译,百度小姐姐的爬取,的对比爬取。总结嘛!!!加…...
【Python】单元测试unittest框架
note 使用unittest框架进行单元测试是Python标准库的一部分,提供了编写测试用例、测试套件以及运行测试的能力。测试用例是继承自unittest.TestCase的类。在这个类中,你可以定义一系列的方法来测试不同的行为。每个测试方法都应该以test开头。 文章目录…...
(三十七)大数据实战——Solr服务的部署安装
前言 Solr是一个基于Apache Lucene的开源搜索平台,它提供了强大的全文搜索、分布式搜索和数据分析功能。Solr 可以用于构建高性能的搜索应用程序,支持从海量数据中快速检索和分析信息。Solr 使用倒排索引和先进的搜索算法,可实现快速而准确的…...
在Ubuntu22.04上部署FoooCUS2.1
Fooocus 是一款基于 Gradio的图像生成软件,Fooocus 是对 Stable Diffusion 和 Midjourney 设计的重新思考: 1、从 Stable Diffusion 学习,该软件是离线的、开源的和免费的。 2、从 Midjourney 中学到,不需要手动调整,…...
详解C语言中的野指针和assert断言
目录 1.野指针1.1 野指针成因1.1.1 指针未初始化1.1.2 指针越界访问1.1.3 指针指向的空间释放 1.2 如何规避野指针1.2.1 指针初始化1.2.2 小心指针越界1.2.3 指针变量不再使用时,及时置为NULL,指针使用之前检查1.2.4 避免返回局部变量的地址 2.assert断言…...
Vue源码系列讲解——模板编译篇【四】(文本解析器)
1. 前言 在上篇文章中我们说了,当HTML解析器解析到文本内容时会调用4个钩子函数中的chars函数来创建文本型的AST节点,并且也说了在chars函数中会根据文本内容是否包含变量再细分为创建含有变量的AST节点和不包含变量的AST节点,如下ÿ…...
微信小程序开发学习笔记《17》uni-app框架-tabBar
微信小程序开发学习笔记《17》uni-app框架-tabBar 博主正在学习微信小程序开发,希望记录自己学习过程同时与广大网友共同学习讨论。建议仔细阅读uni-app对应官方文档 一、创建tabBar分支 运行如下的命令,基于master分支在本地创建tabBar子分支&#x…...
《区块链公链数据分析简易速速上手小册》第5章:高级数据分析技术(2024 最新版)
文章目录 5.1 跨链交易分析5.1.1 基础知识5.1.2 重点案例:分析以太坊到 BSC 的跨链交易理论步骤和工具准备Python 代码示例构思步骤1: 设置环境和获取合约信息步骤2: 分析以太坊上的锁定交易步骤3: 跟踪BSC上的铸币交易 结论 5.1.3 拓展案例 1:使用 Pyth…...
【芯片设计- RTL 数字逻辑设计入门 15 -- 函数实现数据大小端转换】
文章目录 函数实现数据大小端转换函数语法函数使用的规则Verilog and Testbench综合图VCS 仿真波形 函数实现数据大小端转换 在数字芯片设计中,经常把实现特定功能的模块编写成函数,在需要的时候再在主模块中调用,以提高代码的复用性和提高设…...
Codeforces Round 925 (Div. 3) D. Divisible Pairs (Java)
Codeforces Round 925 (Div. 3) D. Divisible Pairs (Java) 比赛链接:Codeforces Round 925 (Div. 3) D题传送门:D.Divisible Pairs 题目:D.Divisible Pairs 题目描述 输出格式 For each test case, output a single integer — the num…...
【C语言】实现单链表
目录 (一)头文件 (二)功能实现 (1)打印单链表 (2)头插与头删 (3)尾插与尾删 (4) 删除指定位置节点 和 删除指定位置之后的节点 …...
Hive调优——合并小文件
目录 一、小文件产生的原因 二、小文件的危害 三、小文件的解决方案 3.1 小文件的预防 3.1.1 减少Map数量 3.1.2 减少Reduce的数量 3.2 已存在的小文件合并 3.2.1 方式一:insert overwrite (推荐) 3.2.2 方式二:concatenate 3.2.3 方式三ÿ…...
设计模式(行为型模式)责任链模式
目录 一、简介二、责任链模式2.1、处理器接口2.2、具体处理器类2.3、使用 三、优点与缺点 一、简介 责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,允许你将请求沿着处理者链进行传递,直到有一个处理者能够处理…...
HTTP和HTTPS区别!
http 是我们几乎天天都要打交道的东西,相关知识点有点多,所以也有不少面试必问的点,这里做了一些整理,帮且大家树立完整的 http 知识体系,对面试官说 so easy HTTP 的特点和缺点 特点:无连接、无状态、灵…...
麻将普通胡牌算法(带混)
最近在玩腾讯的麻将游戏,但是经常需要充值,于是就想自己实现一个简单的单机麻将游戏.第一个难点就是实现胡牌的判断.这里写一下心得. 术语 本文的胡牌是指手牌构成了3N2的牌型,即一对做将,剩下的牌均为刻子(3张一样的牌)或者顺子(3张连续的牌比如234饼). 下面就是一个14张牌…...
Rust结构体详解:定义、使用及方法
Rust 是一门强调安全性和性能的系统级编程语言,它引入了结构体(struct)作为一种自定义的数据类型,允许程序员以更加灵活的方式组织和操作数据。在本篇博客中,我们将深入探讨 Rust 结构体的定义、使用以及相关概念。 什…...
LeetCode、435. 无重叠区间【中等,贪心 区间问题】
文章目录 前言LeetCode、435. 无重叠区间【中等,贪心 区间问题】题目链接及分类思路贪心、区间问题 资料获取 前言 博主介绍:✌目前全网粉丝2W,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技…...
【实战】一、Jest 前端自动化测试框架基础入门(三) —— 前端要学的测试课 从Jest入门到TDD BDD双实战(三)
文章目录 一、Jest 前端自动化测试框架基础入门7.异步代码的测试方法8.Jest 中的钩子函数9.钩子函数的作用域 学习内容来源:Jest入门到TDD/BDD双实战_前端要学的测试课 相对原教程,我在学习开始时(2023.08)采用的是当前最新版本&a…...
信息学奥赛一本通1228:书架
1228:书架 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 18190 通过数: 10557 【题目描述】 John最近买了一个书架用来存放奶牛养殖书籍,但书架很快被存满了,只剩最顶层有空余。 John共有N�头奶牛(1≤N≤20,0001≤…...
红队打靶练习:GLASGOW SMILE: 1.1
目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 目录探测 1、gobuster 2、dirsearch WEB web信息收集 /how_to.txt /joomla CMS利用 1、爆破后台 2、登录 3、反弹shell 提权 系统信息收集 rob用户登录 abner用户 penguin用户 get root flag 信息收集…...
League-Toolkit技术解析:从原理到实践的全方位指南
League-Toolkit技术解析:从原理到实践的全方位指南 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Toolkit是一…...
Gemini 3.1镜像实战:用三层思考架构与多模态引擎解决视频内容生产
谷歌2026年初发布的Gemini 3.1 Pro,凭借可配置的三层思考架构(低/中/高推理深度)和集成Veo视频引擎、Lyria 3音频引擎的多模态能力,为实际业务问题提供了全新的解决范式。国内开发者和内容创作者可通过聚合平台RskAi(w…...
FPGA新手必看:Vivado 2023.1里用DDS IP核生成1MHz正弦波,附完整仿真代码
FPGA实战:从零构建1MHz正弦波生成器的Vivado全流程解析 刚拿到FPGA开发板时,我最想实现的第一个项目就是信号发生器。看着示波器上跳动的波形从自己编写的代码中产生,这种成就感无可替代。本文将带你用Xilinx Vivado 2023.1中的DDS IP核&…...
ClickHouse配置优化实战:关键参数详解与性能调优指南
1. ClickHouse配置优化的核心逻辑 ClickHouse作为一款高性能的OLAP数据库,其配置优化需要遵循三个黄金法则:资源隔离、瓶颈定位和场景适配。我见过太多团队一上来就盲目调整参数,结果反而导致性能下降。正确的做法应该是先理解系统行为&#…...
【Python MCP服务器开发终极模板】:20年架构师亲授源码级解析与高并发优化实战
第一章:Python MCP服务器开发模板概览与核心设计哲学Python MCP(Model-Controller-Protocol)服务器开发模板是一套面向协议驱动、可插拔架构的轻量级服务框架,专为构建高内聚、低耦合的模型交互后端而设计。其核心不依赖于特定Web…...
思考时爱用手托腮?警惕单侧发力拖垮颈肩平衡
很多人在工作、学习或思考时,习惯用手托腮,这个看似不经意的动作,会给颈肩带来持续负担,引发肌肉失衡劳损。用手托腮时,头部会向一侧倾斜,颈椎处于侧屈状态,颈部一侧肌肉持续紧张、牵拉…...
openEuler系统下NFS服务器配置实战:多场景权限管理与安全优化
1. NFS服务基础与openEuler环境准备 NFS(Network File System)是Linux系统中实现文件共享的经典方案,它允许不同主机通过网络访问远程文件系统,就像操作本地文件一样方便。在openEuler这个企业级Linux发行版上配置NFS服务…...
springboot+vue基于web的校园失物招领系统的设计系统
目录同行可拿货,招校园代理 ,本人源头供货商系统功能模块分析交互与流程设计技术实现要点项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 系统功能模块分析 用户模块 注册与登录&…...
实战避坑:用Playwright+Selenium绕过电商网站验证码的3种方法(附Python代码)
实战避坑:用PlaywrightSelenium绕过电商网站验证码的3种方法(附Python代码) 电商平台的反爬虫机制日益复杂,验证码作为核心防线之一,已经从简单的图文识别升级到行为验证、智能风控等多维度拦截。本文将聚焦淘宝、京东…...
只要一行代码,瞬间搭建 Web 服务器 python -m http.server 8000
只要一行代码,瞬间搭建 Web 服务器 python -m http.server 8000 目录 只要一行代码,瞬间搭建 Web 服务器 python -m http.server 8000 1. 核心机制:内置的 `http.server` 模块 2. 为什么它能“求生”,但不能“生产”? 🚀 并发处理能力 (Concurrency) 🛡️ 安全性 (Se…...
