利用Python和Selenium获取雪球网沪深上市公司日k线走势图

这篇具有很好参考价值的文章主要介绍了利用Python和Selenium获取雪球网沪深上市公司日k线走势图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文介绍作者如何爬取雪球网(https://xueqiu.com/)沪深股市沪深一览中的上市公司日k线走势图并截图保存至本地~

欢迎关注作者公众号,追踪更多更新更有价值的内容。

利用Python和Selenium获取雪球网沪深上市公司日k线走势图,爬虫,python,测试基础,python,selenium,爬虫,网络爬虫,自动化,beautifulsoup,pip

一、前言

1.1 项目介绍

项目用于获取雪球网沪深股市沪深一览列表中(图1)上市公司的日K线图(图2)。

利用Python和Selenium获取雪球网沪深上市公司日k线走势图,爬虫,python,测试基础,python,selenium,爬虫,网络爬虫,自动化,beautifulsoup,pip

图1 沪深股市-沪深一览

利用Python和Selenium获取雪球网沪深上市公司日k线走势图,爬虫,python,测试基础,python,selenium,爬虫,网络爬虫,自动化,beautifulsoup,pip

图2 日K图

以便从中获取走势向上的公司股票。

1.2 项目地址

项目gitee地址:https://gitee.com/shawn_chen_rtz/stock_daily_trend.git

1.3 环境准备

需要安装依赖requests、selenium模块,通过pip命令。

pip install requests==2.27.1pip install selenium==3.141.0

二、代码详解

2.1 获取股票名称和股票代码

创建方法获取列表股票名称和代码,

import requests

def get_stocks():
    sh_sz = []
    for i in range(1, 11):
        url = "https://stock.xueqiu.com/v5/stock/screener/quote/list.json?page=" + str(
            i) + "&size=60&order=desc&orderby=percent&order_by=percent&market=CN&type=sh_sz"
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \
                    (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
            "Cookie": "xqat=52dfb79aed5f2cdd1e7c2cfc56054ac1f5b77fc3"
        }
        try:
            datas = requests.get(url, headers=headers).json()['data']['list']
        except KeyError:
            print("可能cookie中的xqat失效,请替换")
        for data in datas:
            sh_sz.append({'name': data['name'], 'code': data['symbol']})

    return sh_sz

这里需要注意,请求的地址是https://stock.xueqiu.com/v5/stock/screener/quote/list.json?page=" + str(i)+"&size=60&order=desc&orderby=percent&order_by=percent&market=CN&type=sh_sz,其中str(i)是通过for循环变量i来控制获取分页数据,例子中暂时硬编码为1~10页的数据。当然也可以参数化,把分页数量当做方法get_stocks()的入参,可以自行优化。

另外需要注意的是,需要设置请求头headers,否则不会返回正确响应结果。其中尤其重要的是"Cookie"的设置,必不可少。"Cookie"的值可以通过浏览器访问雪球网站获取。

利用Python和Selenium获取雪球网沪深上市公司日k线走势图,爬虫,python,测试基础,python,selenium,爬虫,网络爬虫,自动化,beautifulsoup,pip

get_stocks()方法返回字典列表变量sh_sz。

2.2 根据股票代码获取日K线图

思路:根据遍历获取的sh_sz,取其中的股票代码拼成股票详情链接,利用selenium访问链接,关闭登录弹窗后,点击日K线,再对当前浏览窗口进行截图保存处理;

同时支持Win与Linux环境的执行,可设置无头模式执行;支持日志记录。

代码实现,如下,​​​​​​​

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.options import Options
import time
import logging

from get_stocks import get_stocks

LOG_FORMAT = "%(levelname)s %(asctime)s - %(message)s"
logging.basicConfig(filename='stock_snapshot.log', level=logging.INFO, filemode='a', format=LOG_FORMAT)
logger = logging.getLogger()

# linux webdriver路径
# driver_path = "/usr/bin/chromedriver"

# Windows webdriver路径
driver_path = "D:\webdriver\chromedriver.exe"

# 是否设置为无头浏览模式
head_less = True
if head_less:
    chrome_options = Options()
    chrome_options.add_argument("--headless")
    chrome_options.add_argument("--no-sandbox")
    driver = webdriver.Chrome(driver_path, chrome_options=chrome_options)
else:
    driver = webdriver.Chrome(driver_path)

stocks = get_stocks()
for stock in stocks:
    driver.maximize_window()
    driver.get(f"https://xueqiu.com/S/{stock['code']}")

    # 关闭掉登录提示窗
    login_win = driver.find_element_by_class_name("modal__login")
    action = ActionChains(driver)
    action.move_to_element(login_win).perform()
    close = login_win.find_element_by_class_name('close')
    driver.execute_script('arguments[0].click();', close)

    # 切换日线
    chart_period_ls = driver.find_elements_by_class_name("chart-period-list")
    for chart in chart_period_ls:
        if chart.text.strip() == "日K":
            # chart.click()
            driver.execute_script('arguments[0].click();', chart)
            time.sleep(0.6)
    driver.set_window_size(1200, 820)
    driver.get_screenshot_as_file(f"{stock['name']}.png")
    logger.info(f"{stock['name']}日线走势图片保存成功")

重点在于登录提示窗的关闭、日K线的点击与图片快照保存,都是通过Python selenium模块实现。而selenium是一种支持多编程语言的自动化测试框架,关于其详细介绍,请访问其官方网站https://www.selenium.dev/

三、执行结果

3.1 执行结果

执行项目,

利用Python和Selenium获取雪球网沪深上市公司日k线走势图,爬虫,python,测试基础,python,selenium,爬虫,网络爬虫,自动化,beautifulsoup,pip

在项目目录下生成一系列股票日K线快照。除此之外还有很多的功能值得增加、扩展。欢迎留言~


可以关注作者微信公众号,追踪更多有价值的内容!利用Python和Selenium获取雪球网沪深上市公司日k线走势图,爬虫,python,测试基础,python,selenium,爬虫,网络爬虫,自动化,beautifulsoup,pip文章来源地址https://www.toymoban.com/news/detail-846451.html

到了这里,关于利用Python和Selenium获取雪球网沪深上市公司日k线走势图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 利用selenium获取Chrome日志(Java版和Python版)

    1.方式一(推荐优先使用该方式) 2.方式二

    2024年02月17日
    浏览(61)
  • python爬虫进阶篇:Scrapy中使用Selenium+Firefox浏览器爬取沪深A股股票行情

    上篇记录了Scrapy搭配selenium的使用方法,有了基本的了解后我们可以将这项技术落实到实际需求中。目前很多股票网站的行情信息都是动态数据,我们可以用Scrapy+selenium对股票进行实时采集并持久化,再进行数据分析、邮件通知等操作。 详情请看上篇笔记 items middlewares setti

    2024年02月04日
    浏览(66)
  • 利用selenium获取接口数据

    起因:页面展示的内容被隐藏了部分,无法获取完整内容 处理方案: 1.利用request模拟接口获取返参,模拟了请求头,但操作时一直无法获得数据,报错:org.apache.catalina.connector.ClientAbortException。未深究,大概率是服务器安全问题 selenium获取请求头可参考:https://blog.csdn.net/q

    2024年02月11日
    浏览(35)
  • 【Python爬虫实战】1.爬取A股上市公司年报链接并存入Excel

     数据来源:巨潮资讯  项目需求:按照股票代码,公司名称,年报全称,年份,下载链接等要素写入excel表  使用语言:python  第三方库:requests, re , time等 成品展示:  废话就到这里,直接开干! 1.寻找接口 众所周知,爬取网页数据一般可以通过寻找网页结构规律和爬取接

    2024年02月04日
    浏览(44)
  • 用AkShare获取沪深京A股所有股票历史数据

    前面章节已经介绍了如何用AkShare调用A股实时的数据,但是在我们量化投资过程中,经常会需要用到全量数据(即所有A股的历史数据)。接下来我们讲讲用AkShare获取A股所有股票历史数据。     首先,我们通过AkShare的东财实时行情数据接口stock_zh_a_spot_em获取沪深京A股所有股

    2024年02月03日
    浏览(51)
  • python数据分析及可视化(十四)数据分析可视化练习-上市公司可视化数据分析、黑色星期五案例分析

    从中商情报网下载的数据,表格中会存在很多的问题,查看数据的信息有无缺失,然后做数据的清晰,有无重复值,异常数据,省份和城市的列名称和数据是不对照的,删除掉一些不需要的数据,省份不完整的数据,然后进行数据分析以及可视化,如上市公司中的行业Top5,用

    2024年02月03日
    浏览(58)
  • 百万粉丝都在看的Python上手教程----滚雪球学Python

    前言: Hello大家好,我是Dream。 今天为大家带来一本书: 《滚雪球学Python》 一起来看看吧~ 《滚雪球学Python》之所以这样命名本书,是希望大家用滚雪球的思维学习编程语言,“滚”的第一遍,从全局掌握Python技术体系,“滚”的第二遍继续为自己的技术栈沾上更多的雪花,

    2024年01月24日
    浏览(50)
  • Python利用Selenium实现自动化验证登录

    Python里面使用Selenium是一个很重要的自动化测试模块,我们可以用它写一个验证登录脚本,有了这个可以用来保存cookie信息等,下面是一个简单的demo:

    2024年02月15日
    浏览(46)
  • python 利用多线程执行selenium(自动化)测试

    python 利用多线程执行selenium测试 在实际应用中,可能会遇到项目要求既要在Chrome浏览器中测试,又需要在Firefox浏览器中进行测试,那么此时就能体现出多线程测试的优势。多线程并行地运行自动化测试,提高了效率。 示例:在本地利用chrome浏览器和firefox浏览器对同一脚本进

    2024年01月18日
    浏览(51)
  • Python利用Selenium实现弹出框的处理

    现如今经常出现在网页上的基于 JavaScript 实现的弹出框有三种,分别是  alert、confirm、prompt  。该章节主要是学习如何利用 selenium 处理这三种弹出框。奥利给,冲! JavaScript的三种对话框是通过调用 \\\"window对象\\\" 的三个方法 \\\"alert()\\\"、\\\"confirm()\\\" 、\\\"prompt()\\\" 来获得,我们可以利用这

    2024年02月01日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包