当前位置: 首页 > news >正文

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

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

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

在来分析,我们会发现,是不是我们不只是要获取到一页的数据,我们要获取这个网站上所有的大学数据对吧,那么我们就要获取到这个按钮然后通过模拟用户操作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)

相关文章:

  • SmartEDA VS Multisim/Proteus:电子设计江湖,谁主沉浮?
  • Aws EC2,kubeadm方式安装kubernetes(k8s)
  • 【QT】将字符串条件转换为一个可以编程检查的条件
  • 技术周总结2024.06.03~06.09(K8S HikariCP数据库连接池)
  • gorse修改开源项目后,如何使用Docker compose发布
  • 光猫、路由器的路由模式、桥接模式、拨号上网
  • k8s-mysql主从部署
  • 部署kubesphere报错
  • 【运维】如何更换Ubuntu默认的Python版本,update-alternatives如何使用
  • C++从入门到精通(最详细教程,12万总结,带你掌握c++知识,涵盖大量知识点)
  • 3、前端本地环境搭建
  • 门面模式Api网关(SpringCloudGateway)
  • C++【STL】改造红黑树简单模拟实现set map(带你了解set map的底层实现结构)
  • c语言基础篇B
  • ORA-12519 TNS:no appropriate service handler found
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 2019年如何成为全栈工程师?
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • ES10 特性的完整指南
  • ES6系列(二)变量的解构赋值
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • javascript 哈希表
  • JavaScript实现分页效果
  • java取消线程实例
  • linux安装openssl、swoole等扩展的具体步骤
  • Lsb图片隐写
  • Magento 1.x 中文订单打印乱码
  • node入门
  • passportjs 源码分析
  • React-生命周期杂记
  • React中的“虫洞”——Context
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • STAR法则
  • vue数据传递--我有特殊的实现技巧
  • zookeeper系列(七)实战分布式命名服务
  • 包装类对象
  • 浮现式设计
  • 聊聊sentinel的DegradeSlot
  • 深度学习在携程攻略社区的应用
  • 实习面试笔记
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 智能合约开发环境搭建及Hello World合约
  • 你对linux中grep命令知道多少?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #FPGA(基础知识)
  • #Linux(帮助手册)
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #职场发展#其他
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (13)Hive调优——动态分区导致的小文件问题
  • (16)Reactor的测试——响应式Spring的道法术器
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (附源码)计算机毕业设计高校学生选课系统