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

以下是基于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画图把时间作为横坐标的方法

    使用Python可以利用各种库和工具来进行绘图,其中比较常用的库有Matplotlib和Seaborn。下面是使用Matplotlib和Pandas来将时间作为横坐标绘制折线图的具体步骤: 1. 导入依赖库 Matplotlib是Python的一个绘图库,Pandas是Python的一个数据处理库。首先需要安装这两个库,并导入相关依赖库: import ma…

    python 2023年5月18日
    00
  • Python通过内置函数和自写算法DFS实现排列组合

    针对您提到的主题,我会给出详细的解释和两个示例。 什么是排列组合? 排列组合是数学中的一个分支,用于计算不同元素之间的排列方式和组合方式。在计算机中,排列组合有着广泛的应用,例如搜索引擎中的搜索结果排列、网络爬虫中的爬取页面顺序等方面。 在 Python 中,可以通过内置函数和自写算法 DFS 来实现排列组合的计算。 Python中的内置函数实现排列组合 P…

    python 2023年5月14日
    00
  • 在python的嵌套循环中嵌套打印

    【问题标题】:Nested print in a nested loop in python在python的嵌套循环中嵌套打印 【发布时间】:2023-04-06 20:25:02 【问题描述】: 如何创建在两个 for 循环中创建的输出? 我想要什么: Name1 Adress1 Name2 Adress2 .. 我得到了什么: Name1 Name2 A…

    Python开发 2023年4月7日
    00
  • Python和其他编程语言有什么区别?

    Python是一种高级、面向对象的编程语言,与其他编程语言相比,它具有以下几点差别: 1. 语法简单 Python的语法非常简单,易于学习和记忆,像英语一样的语法,加上优雅和简洁的语法风格,使得Python查错和调试变得容易。 示例代码:以下是Python代码和Java代码实现Hello World的对比。 Python代码: print("Hel…

    python 2023年4月19日
    00
  • Python中浅拷贝的四种实现方法小结

    下面是Python中浅拷贝的四种实现方法小结的详细攻略。 标题 Python中浅拷贝的四种实现方法小结 简介 在Python中,一个对象的引用赋值给另一个变量时,实际上是把这个对象的地址复制给了这个变量。为了避免对原始变量的修改影响到新变量,通常需要进行拷贝。浅拷贝是拷贝了原对象的一份引用,而不是拷贝了原对象本身。本文将介绍Python中实现浅拷贝的四种方法…

    python 2023年5月14日
    00
  • Python – 如何在没有特定文件的代码块中检查 PEP8 错误 [重复]

    【问题标题】:Python – How to check PEP8 errors in a chunk of code with no specific file [duplicate]Python – 如何在没有特定文件的代码块中检查 PEP8 错误 [重复] 【发布时间】:2023-04-04 04:14:01 【问题描述】: 我目前在一个电子学习平台上…

    Python开发 2023年4月6日
    00
  • 详解Python正则表达式re模块

    详解Python正则表达式re模块 正则表达式是一种用于匹配字符串的强大工具,可以在Python用于解析HTML、XML等本数据。Python中的re模块提供了正表达式的支,本攻略将细讲解re模基本用法、常用函数和示例应用。 re模块基本用法 在使用re模之前,需要先导入该模“`pythonimport re re模块提供了一些常用的函数,用于处理正则表达…

    python 2023年5月14日
    00
  • 我的第一个python爬虫程序

    程序用来爬取糗事百科上的图片的,程序设有超时功能,具有异常处理能力 下面直接上源码: #-*-coding:utf-8-*- ”’ Created on 2016年10月20日 @author: audi ”’ import urllib2 import re from bs4 import BeautifulSoup import sys reload…

    爬虫 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部