python爬取股票实时价格 您所在的位置:网站首页 pins股票实时价格 python爬取股票实时价格

python爬取股票实时价格

2023-05-31 21:53| 来源: 网络整理| 查看: 265

60e6ed0c7fb25665ec77df4490379ebc.png

马上要离职了,天天在单位闲出屁,但是又不好明目张胆,就默默开始搜寻上班摸鱼技能,嘿,还真被我找到了。。。

天天抱个手机看股票也不是个办法,各位老师们给的现成的代码都是爬取盘后数据,这种,我公众号里面现成的一大堆,连自己跑代码的过程都省去了,最后只能自己动手丰衣足食咯

=。=(代码里面有很多是没啥用的,也懒得删了)

import re import time from urllib.parse import quote from selenium import webdriver global stoList,stoList_quote stoList = [] stoList_quote = [] # 价格获取函数 def get_price(browser): num1 = browser.find_element_by_xpath('/html/body/div[3]/div/div[2]/div[4]/div[2]/div[1]/span[1]') price = num1.text # print(price) return price # 涨跌额获取函数 def get_amount(browser): num2 = browser.find_element_by_xpath('/html/body/div[3]/div/div[2]/div[4]/div[2]/div[1]/span[3]') amount = num2.text # print(amount) return amount # 涨跌幅获取函数 def get_range_(browser): num3 = browser.find_element_by_xpath('/html/body/div[3]/div/div[2]/div[4]/div[2]/div[1]/span[4]') range_ = re.findall(r'((.*?))',num3.text) # print(range_) return range_ # 颜色函数 def _wrap_colour(colour, *args): for a in args: print(colour + '{}'.format(a) + '033[0m') # 颜色 def blue(*args): _wrap_colour('033[94m', *args) def bold(*args): _wrap_colour('033[1m', *args) def cyan(*args): _wrap_colour('033[96m', *args) def darkcyan(*args): _wrap_colour('033[36m', *args) def green(*args): _wrap_colour('033[92m', *args) def pink(*args): _wrap_colour('033[95m', *args) def purple(*args): _wrap_colour('033[035m', *args) def red(*args): _wrap_colour('033[91m', *args) def underline(*args): _wrap_colour('033[4m', *args) def yellow(*args): _wrap_colour('033[93m', *args) if __name__ == '__main__': i = 1 red('注意:1.输入的代码尽量保持统一,否则会影响对齐;nt 2.输入代码,以回车键结束;nt 3.结束输入,直接按回车键;n') # 输入stock代码,存到stoList中,stoList_quote存的是转码后的代码 while True: sto = input('请输入第' + str(i) + '个代码:') if len(sto) != 0: stoList.append(sto) stoList_quote.append(quote(sto)) blue('第' + str(i) + '个代码已接收!') i = i + 1 else: blue('结束输入!') break yellow('n代码总个数:' + str(i - 1)) # print(stoList) # print(stoList_quote) # 名称查询url,支持代码,拼音首字母,汉字名称查询 url_search = 'http://so.eastmoney.com/' # print(url_search) # 打开Firefox浏览器,进入查询url browser = webdriver.Firefox() for relink in range(1, 12): try: browser.get(url_search) cyan('n搜索页面连接成功!n') break except Exception as e: if relink < 11: red('n第'+str(relink)+'次连接失败,重连中...n') time.sleep(1) else: red(e) break red('搜索结果:') searchTimes = 0 while True: pink("*{:-^50}*".format('-')) titleInfo = "{0:{4}^10}{1:{4}^10}{2:{4}^10}{3:^10}".format('Code', 'Price', 'Amount', 'Range', chr(12288)) f = open('STO.doc','w+',encoding='utf-8') f.writelines(titleInfo) f.writelines('n') red(titleInfo) for info in stoList: # 第一次进入查询界面“搜索”按钮的xpath与之后的不同,单独处理 if searchTimes != 0: browser.find_element_by_id("searchSuggest").send_keys(info) browser.find_element_by_xpath("/html/body/div[1]/div[1]/div/div[1]/button").click() searchTimes = searchTimes + 1 else: browser.find_element_by_id("searchSuggest").send_keys(info) browser.find_element_by_xpath("/html/body/div[1]/div[1]/div[2]/div").click() searchTimes = searchTimes + 1 # print('Search Url Open Success!') price_current = get_price(browser) amount_current = get_amount(browser) range_current = get_range_(browser) lineInfo = "{0:{4}^10}{1:{4}^10}{2:{4}^10}{3:^10}".format(info,price_current, amount_current, range_current[0], chr(12288)) f.writelines(lineInfo) f.writelines('n') print(lineInfo) browser.find_element_by_id("searchSuggest").clear() time.sleep(1) f.close()

因为数据是动态的,所以采用Selenium来爬取的,但是有个不好的地方就是浏览器一直在查查查,但是的但是暂时也还不会更优的方法T^T

程序执行的效果图:

e79b0b98bc8fe9ee2477e60b27134730.png

然后搜索结果就会一直读一直读,就相当于实时显示我需要的股票的信息了,而且因为是直接在东财的搜索页搜索,所以支持代码,汉字,首字母输入,支持主板,创业板,科创板,甚至可转债,不像腾讯文档的stock()函数,科创板都不行。但是执行久了可能会有异常抛出,重新开始执行就好了,能实现功能就已经不想再去考虑代码的健壮性了=。=



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有