Selenium Python 自动抓取个股数据

news2025/2/22 4:10:30

Selenium是广泛使用的开源Web UI(用户界面)自动化测试套件之一。支持Chrome, Edge, Firfox等常见浏览器,Selenium Python库也是python对web应用进行自动化测试的非常有用的工具。 Selenium 还适合用于抓取Javascript 动态网页数据。
在这里插入图片描述

本文演示如何使用 Selenium 编程自动查询个股数据。

1、安装 selenium python 库

用pip安装 selenium库

pip install selenium

下载驱动

浏览器下载地址
Chromehttps://sites.google.com/chromium.org/driver/
Edgehttps://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefoxhttps://github.com/mozilla/geckodriver/releases
Safarihttps://webkit.org/blog/6900/webdriver-support-in-safari-10/

下载的驱动可以放在项目目录下,或者将其路径加入到系统 path环境变量中

2、selenium基本编程流程

导入selenium 库

from selenium import webdriver

导入keys 类

from selenium.webdriver.common.keys import Keys

导入定位元素方法类:

from selenium.webdriver.common.by import By

创建 webdriver对象

driver = webdriver.Chrome(executable_path=r'./chromedriver.exe')

打开网页

driver.get("http://www.python.org")

运行程序,会自动打开1个浏览器窗口, 并打开网页http://www.python.org

定位元素:

网页中有1个元素

使用find_element()方法定位元素
element = driver.find_element(By.ID, “passwd-id”)
element = driver.find_element(By.NAME, “passwd”)
element = driver.find_element(By.XPATH, “//input[@id=‘passwd-id’]”)
element = driver.find_element(By.CSS_SELECTOR, “input#passwd-id”) 注意,find_element()方法中,对于xpath, css_selector,只返回第1个匹配到的结果

抓取个股数据

本例功能:从某网站首页,自动输入股票代码,打开1个新窗口,定位价格元素并打印数据。
完整代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

import time

options = webdriver.ChromeOptions()
options.add_argument('user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"')
driver=webdriver.Chrome(executable_path=r'./chromedriver.exe',chrome_options=options)

# tell selenium implicity to wait for 3 seconds for next action 
driver.implicitly_wait(3) 
driver.get("https://www.eastmoney.com/")
print("title:",driver.title)
elem = driver.find_element(By.ID,'code_suggest')
elem.clear()
elem.send_keys("600332")
elem = driver.find_element(By.ID,'search_view_btn1').click()
#切换到新窗口
driver.switch_to.window(driver.window_handles[-1])
# time.sleep(6)
try:
    price_o = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "/html[1]/body[1]/div[1]/div[1]/div[1]/div[8]/div[2]/div[1]/table[1]/tbody[1]/tr[1]/td[2]/span[1]/span[1]")) )
    print("Stock open at: ",price_o.text)
    price_c = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[@class='zxj']/span/span[@class='price_up blinkred']")) )
    #price_c = driver.find_element(By.XPATH,"//div[@class='zxj']/span/span[@class='price_up blinkred']")
    print("stock close at: ",price_c.text)
except:
    print("error happened")
finally:
    driver.quit()

说明:
1) elem.send_keys(“600332”) 表示输入600332代码
2) elem = driver.find_element(By.ID,‘search_view_btn1’).click() 表示定位id=search_view_btn1的元素,并单击。
3) driver.switch_to.window(driver.window_handles[-1]) 表示切换到浏览器最新创建的窗口
4) WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, “/html[1]/body[1]/div[1]/div[1]/div[1]/div[8]/div[2]/div[1]/table[1]/tbody[1]/tr[1]/td[2]/span[1]/span[1]”)) ) 表示尝试等待元素出现,通常用于AJAX网页,最多等10秒。

运行 python demo.py

title: 东方财富网:财经门户,提供专业的财经、股票、行情、证券、基金、理财、银行、保险、信托、期货、黄金、股吧、博客等各类财经资讯及数据
[3744:12972:0605/214254.992:ERROR:interface_endpoint_client.cc(696)] Message 0 rejected by interface blink.mojom.WidgetHost
Stock open at:  34.70
stock close at:  34.77

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

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

相关文章

Spring Bean、XML方式Bean配置、Bean实例化配置、Bean注入

文章目录 Bean管理一、SpringBoot Bean 初了解1.1 了解1.2 Bean的作用域1.2.1 注意事项 1.3 第三方Bean 二、 基于XML方式Bean的配置2.1 SpringBean配置概览2.2 bean id class 配置2.3 bean name 别名配置2.4 bean scope 作用范围2.5 bean 延迟加载2.6 bean 初始化与销毁方法配…

数据结构中的顺序表的实现

文章目录 前言一、初识数据结构二、顺序表的实现(类型一)1.顺序表的头文件2.顺序表的实现 三、顺序表的实现(类型二)1 顺序表头文件2 顺序表的实现 四、线性表(顺序表)的缺点总结 前言 本期就进入到我们数据…

[前端语法]js原型链有关的继承问题

深夜反而思维更活跃一些 (1)js中的原型链 js中存在一个名为原型链的机制,其特点如下 加入一个方法A,A方法一个属性为prototype,这个属性会指向某个对象,也成为A类对象的原型对象. 当我们根据A这个方法生成一个对象a,那么a的原型(proto)属性即为这个对象 a可以调用一些原型…

【cropperjs】优秀、优雅的前端图片裁剪库

下载 npm i cropperjsnpm官网- https://www.npmjs.com/package/cropperjs cropperjs关键参数 aspectRatio 图片裁剪比例 默认值 :NaN作用:图片裁剪比例值:自定义裁剪比例,例如1 / 1 , 4 / 3 , 16 / 9等 viewMode 裁剪模式 默认…

代码随想录算法训练营第二十七天| 39. 组合总和、 40.组合总和II、 131.分割回文串

组合总数 题目链接:力扣 这题和之前题目的区别在于,本题没有数量要求,可以无限重复的取某一元素,但是对元素的总和有限制,这就说明了递归的限制不在于层数,而是选取元素的总和超过target就返回 终止条件为…

【owt】WebrtcNode, subscirbe-sdp offer 流程(2)

流程图 创建MediaStream, MediaStream一方面作为从VideoFramePacketizer接收到媒体数据; 创建VideoFramePacketizer,MediaStream 把sink 注册到VideoFramePacketizer,这样VideoFramePacketizer(继承了MediaSource&…

upload靶场通关(12-21关)

Pass-12(白名单校验(GET 型 0x00 截断)) 先看提示: 一头雾水,只知道了上传路径是可控的 查看源码: 能看懂就看看,反正我是看了同学的笔记得知这是白名单,按照文件名进行…

Customizable constraint systems for succinct arguments学习笔记(1)

1. 引言 微软研究中心Srinath Setty、a16z crypto research 和 Georgetown University Justin Thaler、Carnegie Mellon University Riad Wahby 20203年论文《Customizable constraint systems for succinct arguments》。 在该论文中,介绍了Customizable constra…

CMake学习(1): CMake基本使用

https://subingwen.cn/cmake/CMake-primer/ 1. CMake 概述 CMake是一个项目构建工具,并且是跨平台的。Cmake跟Makefile其实是差不多的,只不过makefile更底层些。大多是 IDE 软件都集成了 make,比如:VS 的 nmake、linux 下的 GNU…

单链表OJ题:LeetCode--141.环形链表

朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中的第141道单链表OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! 数据结构与算法专栏:数据结构与算法 个 …

龙岗区五联土地整备利益统筹项目,集体物业集中签约仪式

五联土地整备利益统筹项目启动以来街道高度重视相关工作开专题会、建工作组、设党支部把征拆工作一项项推进 截至6月1日已完成: 清租签约73户,面积9.55万m(意向签约17户,约1.66万m) 私人住宅业主补偿安置签约8户&…

Java语言----反射、枚举以及lambda表达式

目录 一.反射 1.1反射的基本情况 1.2反射中最重要的类 1.2.1 Class类 1.2.2Field类 1.2.3Constructor类 1.2.4Methood类 1.3反射优缺点 二.枚举 2.1概念 2.2枚举(enum)类方法 2.3枚举的构造 三.Lambda表达式 3.1Lambda介绍 3.2 函数式接…

AI实战营:深度学习预训练与MMPreTrain

目录 一、MMPretrain算法库介绍 二、经典主干网络 残差网络ResNet(2015) Vision Transformer(2020) 三、自监督学习 四、多模态算法 一、MMPretrain算法库介绍 算法库与任务组成&框架概览 预训练工具箱MMPretrain Python推理API 环境搭建 O…

数据结构与算法·第4章【串】

串是有限长的字符序列,由一对单引号相括,如: “a string” 可以理解为c的 s t r i n g string string 基本操作 S t r A s s i g n , S t r C o m p a r e , S t r L e n g t h , C o n c a t , S u b S t r i n g StrAssign,StrCompare,StrLength,Conc…

大数据技术——使用IDEA开发Scala程序

目录 一、使用IDEA开发WordCount程序... 3 二、实验目的... 3 三、实验要求... 3 四、实验环境... 3 五、实验步骤... 3 4.1.1启动IDEA并创建一个新项目WordCount 3 4.1.2为WordCount项目添加Scala框架支持... 7 4.1.3数据准备... 8 4.1.4设置项目目录... 9 4.1.5新建…

webAPI学习笔记4——PC端网页特效

目录 1. 元素偏移量 offset 系列 1.1 offset 概述 1.2 offset 与 style 区别 offset style !!!!!!!案例:获取鼠标在盒子内的坐标 !!!!!&…

Jeston Orin Nnao 安装pytorch与torchvision环境

大家好,我是虎哥,Jeston Orin nano 8G模块,提供高达 40 TOPS 的 AI 算力,安装好了Jetpack5.1之后,我们需要配置一些支持环境,来为我们后续的深度学习开发提供支持。本章内容,我将主要围绕安装对…

OCR图片文字识别,人工手动图片标注软件安装过程

OCR图片文字识别,人工手动图片标注软件安装过程,本章关注标注软件的安装,启动过程 1. 下载 anaconda anaconda 下载慢的问题: 使用国内镜像地址下载: https://mirrors.bfsu.edu.cn/anaconda/archive/ https://www.ana…

OpenMMLab-AI实战营第二期——4.深度学习预训练与MMPretrain

文章目录 1. MMPreTrain算法库介绍1.1 算法库与任务组成1.2 框架概览 2. 经典主干网络2.1 ResNet2.2 Vision Transformer 3. 自监督学习3.1 SimCLR3.2 MAE3.3 iBOT 4. 多模态算法4.1 CLIP4.2 BLIP 视频链接:b站-深度学习预训练与MMPretrain 1. MMPreTrain算法库介绍…

NvM学习笔记(一)以TC387为例,分析为什么要使用Flash 模拟 EEPROM ?

在嵌入式软件系统中,管理非易失性的数据存储,如在系统启动时,从非易失性存储器中读取一些关键数据,在系统关闭阶段,同步应用程序RAM区的数据到非易失性存储器中,是一项十分必要的工作。 目前行业内用的最广…