基于Python爬取搜狐证券股票过程解析

yizhihongxing

以下是基于Python爬取搜狐证券股票的完整攻略:

1. 爬取网页

首先,要使用Python的requests库发送HTTP请求获取搜狐证券股票的网页内容。可以使用如下代码:

import requests

url = 'https://q.stock.sohu.com/hisHq?code=cn_600519&start=20220101&end=20220131&stat=1&order=D&period=d&callback=historySearchHandler&rt=jsonp'

response = requests.get(url)
html_content = response.content.decode('gbk')
print(html_content)

这里以爬取茅台(股票代码cn_600519)2022年1月份的历史数据为例。上面的代码会打印出获取到的搜狐证券茅台股票2022年1月份历史数据的网页内容。

2. 解析网页

接着,要使用Python的re库对网页内容进行解析,提取所需的信息。可以使用如下代码:

import re

pattern = r'\[(.*?)\]'
match = re.search(pattern, html_content)
data_str = match.group(0)
print(data_str)

在上面的代码中,使用正则表达式匹配出网页内容中的json数据,并打印出所匹配到的数据。

3. 解析数据

接下来,要对json数据进行解析,提取股票的历史数据信息。可以使用如下代码:

import json

data_list = json.loads(data_str)
history_list = []
for data in data_list:
    history = {}
    items = data.split(',')
    history['date'] = items[0]
    history['open'] = float(items[1])
    history['close'] = float(items[2])
    history['high'] = float(items[3])
    history['low'] = float(items[4])
    history_list.append(history)
print(history_list)

在上面的代码中,将json数据解析成一个包含股票历史信息的列表。其中,每个历史数据都是一个字典,包含了日期、开盘价、收盘价、最高价、最低价等信息。

示例一

以上代码可以爬取所有的股票历史数据,包括沪深股市的所有股票。假设现在要爬取某只股票的历史数据,可以按如下方法修改代码:

import requests
import re
import json

def crawl_stock_history(stock_code, start_date, end_date):
    url_tpl = 'https://q.stock.sohu.com/hisHq?code=%s&start=%s&end=%s&stat=1&order=D&period=d&callback=historySearchHandler&rt=jsonp'
    url = url_tpl % (stock_code, start_date, end_date)

    response = requests.get(url)
    html_content = response.content.decode('gbk')

    pattern = r'\[(.*?)\]'
    match = re.search(pattern, html_content)
    data_str = match.group(0)

    history_list = []
    data_list = json.loads(data_str)
    for data in data_list:
        history = {}
        items = data.split(',')
        history['date'] = items[0]
        history['open'] = float(items[1])
        history['close'] = float(items[2])
        history['high'] = float(items[3])
        history['low'] = float(items[4])
        history_list.append(history)

    return history_list

stock_code = 'cn_600519'
start_date = '20220101'
end_date = '20220131'
history_list = crawl_stock_history(stock_code, start_date, end_date)
print(history_list)

在上面的代码中,新增了一个crawl_stock_history函数,根据给定的股票代码、开始日期和结束日期,爬取对应的历史数据。

示例二

在股票的历史数据中,还经常会使用到技术指标,如均线、MACD等。针对这些指标,我们可以使用Python的ta库导入相应的技术指标,并将其添加到历史数据中。例如,下面的代码将MA5和MA10指标添加到股票历史数据中:

import requests
import re
import json
import ta

def add_tech_indicators(history_list):
    df = ta.utils.DataFrame(history_list)
    df = ta.add_all_ta_features(df, open='open', high='high', low='low', close='close', volume=None, fillna=False)
    history_list = df.to_dict('records')
    return history_list

stock_code = 'cn_600519'
start_date = '20220101'
end_date = '20220131'
history_list = crawl_stock_history(stock_code, start_date, end_date)
history_list = add_tech_indicators(history_list)
print(history_list)

在上面的代码中,使用了Python的ta库计算MA5和MA10,并将这两个指标添加到股票历史数据中。可以看到,历史数据中新增了MA5和MA10两个字段。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于Python爬取搜狐证券股票过程解析 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • python 构造三维全零数组的方法

    构造一个三维全零数组(或者叫做三维零矩阵),可以使用Numpy库中的zeros函数。 构造一个形状为(2,3,4)的三维全零数组,代码如下所示: import numpy as np arr = np.zeros((2,3,4)) print(arr) 输出结果: [[[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]] [[…

    python 2023年6月5日
    00
  • 解决python3 HTMLTestRunner测试报告中文乱码的问题

    在Python3中使用HTMLTestRunner生成测试报告时,中文字符可能会出现乱码。本攻略将提供两种解决方法。 方法一:修改HTMLTestRunner源代码 下载HTMLTestRunner源代码 可以从这里下载HTMLTestRunner源代码。 修改HTMLTestRunner.py文件 在HTMLTestRunner.py文件中,找到以下代码:…

    python 2023年5月15日
    00
  • Python二维数组实现求出3*3矩阵对角线元素的和示例

    Python二维数组实现求出3*3矩阵对角线元素的和示例 简介 Python中的二维数组可以使用列表嵌套列表的方式来实现。在本示例中,我们将通过Python实现3*3矩阵对角线元素的求和。本文将从以下几个方面进行介绍: 二维数组的定义和初始化 求出矩阵对角线元素的和 二维数组的定义和初始化 在Python中,二维数组可以使用列表嵌套列表的方式来实现。定义一个…

    python 2023年6月6日
    00
  • Python实现批量采集商品数据的示例详解

    Python实现批量采集商品数据的示例详解 在电商行业,我们经常需要采集大量商品数据。本文将介绍如何使用Python实现批量采集商品数据,包括如何使用requests库发送HTTP请求、如何使用BeautifulSoup库解析HTML响应、如何使用pandas库将数据保存到CSV文件中,并提供两个示例代码。 步骤1:导入必要的库 在使用Python实现批量采…

    python 2023年5月15日
    00
  • python抓取网页内容并进行语音播报的方法

    Python抓取网页内容并进行语音播报的方法可以分为以下几个步骤: 安装必要的Python库 编写Python程序,利用requests库抓取网页内容 使用BeautifulSoup库来解析网页内容,提取所需信息 调用语音合成API,在程序中将所需信息转化为语音 利用Python库pyttsx3或winsound来播放语音 下面我将详细解析每一个步骤,并提供…

    python 2023年5月19日
    00
  • 自动化远程服务器上的日常 python 进程以提高可靠性

    【问题标题】:Automate daily python process on remote server for improved reliability自动化远程服务器上的日常 python 进程以提高可靠性 【发布时间】:2023-04-06 20:57:01 【问题描述】: 我有一个每天通过计划任务在本地运行的 python 脚本。大多数时候,这很好…

    Python开发 2023年4月7日
    00
  • 爬虫第一天

    爬虫学习参考博客:https://www.cnblogs.com/cyycyhcbw/articles/10442399.html 1.使用软件anaconda 2.输入jupyter notbook  3.anaconda使用快捷键 -插入cell:     a  上一行插入        b 下一行插入 -删除: x -模式切换: m切换到master …

    爬虫 2023年4月11日
    00
  • Python解析JSON数据的基本方法实例代码

    下面是“Python解析JSON数据的基本方法实例代码”的完整攻略: 什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写。它基于JavaScript语言的一个子集,可以被多种编程语言读取和解析。 Python解析JSON数据的基本方法 Python中可以使用标准库中的 json 模块来解…

    python 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部