用爬虫实现---模拟填志愿

 先来说实现逻辑,首先我要获取到这个网站上所有的信息,那么我们就可以开始对元素进行检查

 我们发现他的每一个学校信息都有一个对应的属性,并且是相同的,那么我们就可以遍历这个网页中的所有属性一样的开始爬取

在来分析,我们会发现,是不是我们不只是要获取到一页的数据,我们要获取这个网站上所有的大学数据对吧,那么我们就要获取到这个按钮然后通过模拟用户操作webdriver,来模拟用户点击执行,然后在对这个数据来进行保存,当然这个数据是保存到数据库中的

import timefrom selenium import webdriver
from selenium.common.exceptions import TimeoutException, NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECdriver = webdriver.Chrome()url = "https://www.gaokao.cn/lineschool"
driver.get(url)try:# 等待直到元素加载完成element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "ant-btn-primary")))# 点击按钮element.click()
except TimeoutException:pass# 提取学校信息
school_infos = driver.find_elements(By.CLASS_NAME, "line-school_schoolInfo__1sdvn")
# 初始化列表用于存储提取的信息
school_data = []# 循环执行点击操作
for i in range(3):print("第" + str(i))# # 将页面滚动到最底部# driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")# 点击下一页next_page_element = driver.find_element(By.CLASS_NAME, "ant-pagination-next")next_page_element.click()try:driver.find_element(By.CLASS_NAME, "login-popup_wordIcon__ljiP9").click()password_login_element = driver.find_element(By.XPATH, "//div[@class='login-popup_passwordItem__OouFG']")password_login_element.click()time.sleep(2)name = driver.find_element(By.CSS_SELECTOR, ".login-popup_inputItem__29c36 .undefined ")name.send_keys("15573491551")password_input_element = driver.find_element(By.XPATH, "//input[@type='password']")password = "Tjt987666"password_input_element.send_keys(password)# 找到复选框并点击选中checkbox_element = driver.find_element(By.XPATH, "//input[@type='checkbox']")checkbox_element.click()# 获取到点击按钮driver.find_element(By.CLASS_NAME, "login-popup_loginBtn__3buCc ").click()except TimeoutException:print("没有继续下一步")school_infos = driver.find_elements(By.CLASS_NAME, "line-school_schoolInfo__1sdvn")# 遍历每个学校信息for school_info in school_infos:print("数据执行")# 提取学校名称和所在城市信息name_element = school_info.find_element(By.CSS_SELECTOR, ".line-school_schoolName__1Zk8b em")city_element = school_info.find_element_by_class_name("line-school_cityName__VnOjC")school_name = name_element.textcity_name = city_element.text# 提取标签信息tags_elements = school_info.find_elements_by_class_name("line-school_tagName__1Hr9k")tags_text = [tag.text for tag in tags_elements]# 获取最后一个 span 标签的文本值last_span_text = school_info.find_element(By.XPATH,".//div[@class='line-school_tags__3Cdah']//span[last()]").text# 提取数字部分score_value = last_span_text.split(":")[-1]# 存储学校信息为元组school_tuple = (school_name, city_name, tags_text, score_value)# 将元组添加到列表中school_data.append(school_tuple)for school_tuple in school_data:print(school_tuple)

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

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

相关文章

补篇协程:susend 挂起函数的深入理解

suspend 挂起的原理: 挂起函数是一种可以在不阻塞线程的情况下挂起和恢复执行的函数。在Kotlin中,我们可以使用suspend关键字来定义一个挂起函数。挂起函数只能在协程或其他挂起函数中调用。 被suspend修饰的函数,该函数就会挂起.挂起函数能够以与普通函…

美团大规模KV存储挑战与架构实践--图文分析

美团大规模KV存储挑战与架构实践–图文分析 原作者:美团技术团队 原文链接:https://tech.meituan.com/2024/03/15/kv-squirrel-cellar.html 1 美团 KV 存储发展历程 第一代:使用Memcached 什么是一致性哈希? 哈希&#xff1a…

kafka如何保证消息不丢失

Kafka发送消息是异步发送的,所以我们不知道消息是否发送成功,所以会可能造成消息丢失。而且Kafka架构是由生产者-服务器端-消费者三种组成部分构成的。要保证消息不丢失,那么主要有三种解决方法。 生产者(producer)端处理 生产者默认发送消息…

AI炒股:用Kimi获取美股的历史成交价格并画出股价走势图

在Kimi中输入提示词: 你是一个Python编程专家,要完成一个编写Python脚本的任务,具体步骤如下: 用akshare库获取谷歌(股票代码:105.GOOG)、亚马逊(股票代码:105.AMZN )、苹果(股票代码:105.AAP…

DolphinScheduler 3.x 执行insert into SQL任务显示成功,但查不到数据

问题:DolphinScheduler 3.x 执行insert into SQL任务成功,但写入数据查询不到 原因:若SQL首行有 “-- ” 开头注释,则是由于 DolphinScheduler 3.x 新版本相较于 2.x 老版本,并未将非查询SQL语句的首行 “-- 注释” 按…

明天15点!如何打好重保预防针:迎战HVV经验分享

在当今数字化时代,网络攻击日益猖獗,各行各业面临的网络安全威胁不断升级。从钓鱼邮件到复杂的APT攻击,网络犯罪分子的手法层出不穷,给各行各业的信息安全带来了前所未有的挑战。 在这样的背景下,"HVV行动"应…

程序代码问题随时记录

1.使用source insight 打开文件,因为有的行太长,1000多个字符,一打开文件si就警告,还要截断,修改文件,一保存就闪退,在打开,就各种问你是保存是回复,搞晕了。 没找到有…

6月7号作业

1, 搭建一个货币的场景,创建一个名为 RMB 的类,该类具有整型私有成员变量 yuan(元)、jiao(角)和 fen(分),并且具有以下功能: (1)重载算术运算符…

【职业思考】程序员应该有什么职业素养?

程序员作为技术领域的专业人员,除了需要具备扎实的技术能力外,还应具备以下职业素养: 持续学习:技术领域日新月异,程序员需要不断学习新的编程语言、框架、工具和最佳实践,以保持自己的技能与时俱进。 问题…

2024年电子工程与自动化技术国际会议(ICEEAT 2024)

2024 International Conference on Electronic Engineering and Automation Technology 【1】大会信息 会议简称:ICEEAT 2024 大会地点:中国西安 审稿通知:投稿后2-3日内通知 【2】会议简介 2024年电子工程与自动化技术国际会议是聚焦电子…

OrangePi AIpro小试牛刀-目标检测(YoloV5s)

非常高兴参加本次香橙派AI Pro,香橙派联合华为昇腾打造的一款AI推理开发板评测活动,以前使用树莓派Raspberry Pi4B 8G版本,这次有幸使用国产嵌入式开发板。 一窥芳容 这款开发板搭载的芯片是和华为昇腾的Atlas 200I DK A2同款的处理器&#…

Vue3中的常见组件通信之$attrs

Vue3中的常见组件通信之$attrs 概述 ​ 在vue3中常见的组件通信有props、mitt、v-model、 r e f s 、 refs、 refs、parent、provide、inject、pinia、slot等。不同的组件关系用不同的传递方式。常见的撘配形式如下表所示。 组件关系传递方式父传子1. props2. v-model3. $re…

[Linux]内网穿透nps

文章目录 基础文件下载项目地址下载地址 客户端安装解压文件客户端启动客户端注册到linux系统服务客户端注册到windows系统服务windows bat 一键管理员注册windows bat 一键管理员取消 基础文件下载 项目地址 https://github.com/ehang-io/nps 下载地址 Releases ehang-io…

微服务第二轮

学习文档 背景 由于每个微服务都有不同的地址或端口,入口不同 请求不同数据时要访问不同的入口,需要维护多个入口地址,麻烦 前端无法调用nacos,无法实时更新服务列表 单体架构时我们只需要完成一次用户登录、身份校验&#xff…

想在VBA软件中做个登录验证会员授权,用什么云服务器好?

想在VBA中做个登录验证会员授权,用什么服务器好? 腾讯云99起,百度云50元起,不过也不知道到底是一整个虚拟机服务器, 装了WIN2012系统的,还是只是一个虚拟网站只给你一个文件夹可以上传PHP,ASP网页后台。 价…

多维vector定义

多维vector定义 CSP 考试需要定义多维矩阵&#xff0c;我发现我不会定义和初始化&#xff0c;遭罪了。 1. 定义一个 n 维 vector vector<int>a(n, 0) 相当于 int a[n] {0} 2. 定义一个 a * b * c 维度的vector vector<vector<vector<int>>> x(a, ve…

【运维】如何更换Ubuntu默认的Python版本,update-alternatives如何使用

update-alternatives 是一个在 Debian 及其衍生发行版中&#xff08;包括 Ubuntu&#xff09;用于管理系统中可替代项的命令。它可以用于在系统中设置默认的软件版本&#xff0c;例如在不同版本的软件之间进行切换&#xff0c;比如不同的 Python 版本。 要在 Ubuntu 中使用 up…

贪心算法 之 股票 跳跃游戏1and2

第一题&#xff1a; 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买&#xff0c;然后在 同一天 出售。 返回 你能获得的 最…

6、组件通信详解(父子、兄弟、祖孙)

一、父传子 1、props 用法&#xff1a; &#xff08;1&#xff09;父组件用 props绑定数据&#xff0c;表示为 v-bind:props"数据" &#xff08;v-bind:简写为 : &#xff0c;props可以任意命名&#xff09; &#xff08;2&#xff09;子组件用 defineProps([props&…

Java 编译报错:找不到符号? 手把手教你排查解决!

Java 编译报错&#xff1a;找不到符号&#xff1f; 手把手教你排查解决&#xff01; 在 Java 开发过程中&#xff0c;我们经常会遇到编译器抛出 "找不到符号" 错误。这个错误提示意味着编译器无法在它所理解的范围内找到你所引用的类、变量或方法。这篇文章将带你一步…