爬虫---涨跌停股票池信息----(东方财富)

1.背景故事–信息来源

获取涨跌停股票池相关信息,内容包含:

  • 股票代码
  • 名称
  • 涨跌幅
  • 最新价
  • 成交额
  • 换手率
  • 连板数

在这里插入图片描述


在这里插入图片描述

【JS返回的数据格式】
在这里插入图片描述


【涨停股】http://quote.eastmoney.com/ztb/detail#type=ztgc
【跌停股】http://quote.eastmoney.com/ztb/detail#type=dtgc



2.准备工作—获取校验码

访问如上连接地址,在js中找到push2ex,最后一个js的调用的get请求,就是获取股票池信息的。

复制你浏览器上的ut对应的校验码(后续需要使用)
在这里插入图片描述



3.代码实现


import requests, json

# flag传入你需要的涨跌停的标识,涨停股:top 跌停股:bottom
# number是每页显示多少条数据,对应的就是你想获取多少条涨跌停的股票
def get_top_or_bottom_stocks_list(flag, number):
    if flag == "top":
        url = "http://push2ex.eastmoney.com/getTopicZTPool"
        sort_type = "fbt:asc"
    elif flag == "bottom":
        url = "http://push2ex.eastmoney.com/getTopicDTPool"
        sort_type = "fund:asc"
    # fund :封单资金(涨跌停均可排序,跌停股默认排序),
    # fbt:  首次封板时间(只有涨停股才有这参数,涨停股默认排序)
    # ut:   这个字段不同客户端的值是一样的,这个值每天都不变动
    param = {"ut": "7eea3edcxxxxxxxxxxxxx",		# 此处是你上一步骤获取的ut码
             "dpt": "wz.ztzt",
             "Pageindex": 0,
             "pagesize": 20,
             "sort": None,
             "date": None}
    today = time.strftime('%Y%m%d')
    param["date"] = today
    param["pagesize"] = number
    param["sort"] = sort_type
    header = {"Accept": "*/*",
              "Accept-Encoding": "gzip, deflate",
              "Accept-Language": "zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7,la;q=0.6",
              "Connection": "keep-alive",
              "Host": "push2ex.eastmoney.com",
              "Referer": "http://quote.eastmoney.com/",
              "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36"
              }
    response = requests.get(url=url, params=param, headers=header)
    res = response.json()
    data_init = res.get("data")
    if data_init:
        data_list = data_init.get("pool")
        result_list = [(dt.get("c"), dt.get("n")) for dt in data_list]
        return result_list

### 如何爬取东方财富网股票涨停数据 为了实现从东方财富网获取并处理股票涨停数据的目标,可以采用Python编程语言结合Selenium库来完成网页自动化操作以及BeautifulSoup或Pandas用于解析HTML文档和处理表格数据。具体方法如下: #### 使用Selenium加载页面并抓取所需信息 由于东方财富网站可能通过JavaScript动态渲染部分内容,因此推荐使用支持浏览器自动化的工具如Selenium来进行页面交互与数据提取。 安装必要的依赖包: ```bash pip install selenium pandas openpyxl ``` 编写Python脚本初始化WebDriver实例访问目标网址,并定位至包含股票列表的元素节点读取其内部文本内容转换成结构化形式以便后续分析过滤。 ```python from selenium import webdriver import time import pandas as pd def get_zt_data(): url = 'http://quote.eastmoney.com/center/gridlist.html#hs_a_board' options = webdriver.ChromeOptions() options.add_argument('--headless') # 设置无界面模式 driver = webdriver.Chrome(options=options) try: driver.get(url) # 等待页面加载完毕 time.sleep(5) table_body = driver.find_element_by_xpath('//*[@id="table_wrapper-table"]/div/table/tbody') rows = table_body.find_elements_by_tag_name('tr') data_list = [] for row in rows: cols = row.find_elements_by_tag_name('td') col_text = [col.text.strip() for col in cols] if len(col_text) >= 23 and float(col_text[4].replace('%', '')) > 9.9: # 判断是否满足条件:涨幅超过9.9% data_dict = { "序号": col_text[0], "代码": col_text[1], "名称": col_text[2], "最新价": col_text[3], "涨跌幅": col_text[4], "涨跌额": col_text[5], "成交量": col_text[6], "成交额": col_text[7], "振幅": col_text[8], "最高": col_text[9], "最低": col_text[10], "今开": col_text[11], "昨收": col_text[12], "量比": col_text[13], "换手率": col_text[14], "市盈率-动态": col_text[15], "市净率": col_text[16], "总市值": col_text[17], "流通市值": col_text[18], "涨速": col_text[19], "5分钟涨跌": col_text[20], "60日涨跌幅": col_text[21], "年初至今涨跌幅": col_text[22] } data_list.append(data_dict) df = pd.DataFrame(data_list) return df finally: driver.quit() zt_df = get_zt_data() print(f'共找到 {len(zt_df)} 支涨停.') if not zt_df.empty: output_file = './zhangting_stocks.xlsx' writer = pd.ExcelWriter(output_file, engine='openpyxl') zt_df.to_excel(writer, index=False, sheet_name='ZT_Stocks') writer.save() print(f'已成功导出至{output_file}') else: print('未发现符合条件的涨停股票.') ``` 此段代码实现了对东方财富网上沪深A市场中所有股票基本信息的遍历查询,并筛选出了那些当日收盘价格相比开盘价格上涨幅度达到甚至超过了10%(即通常所说的“涨停”状态)的个记录下来存入DataFrame对象内[^1]。 最后一步则是将这些特别关注的对象写入本地磁盘上的Excel电子表格文件当中去方便日后查阅统计之用。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hello-alien

您的鼓励,是我最大的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值