精华内容
下载资源
问答
  • Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储,很有参考借鉴意义
  • Python爬虫股票数据爬取

    万次阅读 多人点赞 2019-02-20 16:13:19
    通过网易财经接口可以获取股票和指数的历史数据,下载地址如:http://quotes.money.163.com/service/chddata.html?code=0000001&end=20190218&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;VOTURNOVER;VATURNOVER ...

    一、爬取个股列表

    目标页面:http://quote.eastmoney.com/stocklist.html,爬取个股名称和代码

    相关信息位于li标签中的a标签中,可以通过正则表达式或beautifulsoup获取,以下皆采用正则的方式。个股的代码以0或3或6开头然后把信息写入csv中:

    import requests
    from fake_useragent import UserAgent
    import re
    import csv
    
    def getHtml(url):
        r = requests.get(url,headers={
            'User-Agent': UserAgent().random,
        })
        r.encoding = r.apparent_encoding
        return r.text
    
    stockUrl = 'http://quote.eastmoney.com/stocklist.html'
    PATTERN_STOCK = "<li><a.*>(\w*)\((\d{6})\)</a></li>"
    if __name__ == '__main__':
        html = getHtml(stockUrl)
        reslist = re.findall(PATTERN_STOCK,html)
        #数据清洗:去掉非个股,个股以6(沪市),0(深市),3(创业板)开头
        datalist = reslist[:]
        for res in reslist:
            if not (str(res[1]).startswith('6') or str(res[1]).startswith('3') or str(res[1]).startswith('0')):
                datalist.remove(res)
        f =open('D:/Py/stock.csv','w+',encoding='utf-8',newline="")
        writer = csv.writer(f)
        writer.writerow(('名称', '代码'))
        for data in datalist:
            writer.writerow((data[0],data[1]))
        f.close()

    注意在数据清洗时拷贝了一份列表,因为如果对同一个列表进行遍历并且remove操作时,下标可能会紊乱引发错误

    一共获取到3617支个股

     

    二、下载个股历史数据

    通过网易财经接口可以获取股票和指数的历史数据,下载地址如:http://quotes.money.163.com/service/chddata.html?code=0000001&end=20190218&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;VOTURNOVER;VATURNOVER

    code以一共有7位,后6位表示股票代码,第一位为0表示是沪市,1为深市;end表示截止日期之前的所有数据;fields选项中,分别表示当日的收盘,最高,最低,开盘价,昨日收盘价,涨跌额,涨跌幅,成交量,成交金额。

    通过此链接可以下载到相关个股的csv文件

    注意同时开启3000多个线程可能会有些下载失败,可以通过semaphore设置并发线程数量

    import csv
    import urllib.request as r
    import threading
    
    #读取之前获取的个股csv丢入到一个列表中
    def getStockList():
        stockList = []
        f = open('D:/Py/stock.csv','r',encoding='utf-8')
        f.seek(0)
        reader = csv.reader(f)
        for item in reader:
            stockList.append(item)
        f.close()
        return stockList
    
    def downloadFile(url,filepath):
        try:
            r.urlretrieve(url,filepath)
        except Exception as e:
            print(e)
        print(filepath,"is downloaded")
        pass
    
    #设置信号量,控制线程并发数
    sem = threading.Semaphore(100)
    def downloadFileSem(url,filepath):
        with sem:
            downloadFile(url,filepath)
    
    urlStart = 'http://quotes.money.163.com/service/chddata.html?code='
    urlEnd = '&end=20190218&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;VOTURNOVER;VATURNOVER'
    
    if __name__ == '__main__':
        stockList = getStockList()
        stockList.pop(0)
        for s in stockList:
            scode = str(s[1])
            #0:沪市;1:深市
            url = urlStart + ("0" if scode.startswith('6') else "1") + scode + urlEnd
            filepath ='D:/Py/StocksInfo1/' + (str(s[0])+'_'+scode) + '.csv'
            threading.Thread(target=downloadFileSem,args=(url,filepath)).start()
    

    一共是3617个csv

     

    三、爬取基金数据

    目标页面:http://quote.stockstar.com/fund/stock_3_1_X.html ,X表示页数

    具体数据位于一个表格中

    一共有37页,采用正则截取的方式,最后也是写入csv

    from GetStockList import getHtml
    import re
    import csv
    import threading
    
    def getFundsInfo(baseUrl):
        html = getHtml(baseUrl)
        reslist = re.findall("<tbody[\s\S]*</tbody>",html)
        tbody = reslist[0]
        reslist = re.findall('>(\S+?)</',tbody)
        for i in range(0,len(reslist),8):
            rowList = []
            for j in range(8):
                rowList.append(reslist[i+j])
            writer.writerow(rowList)
    
    if __name__ == '__main__':
        f = open('D:/Py/StockFunds.csv', 'w', encoding='utf-8', newline="")
        writer = csv.writer(f)
        writer.writerow(('基金代码', '基金名称', '单位净值', '累计净值', '日增长额', '日增长率', '申购', '赎回'))
        for page in range(1,38):
            baseUrl = 'http://quote.stockstar.com/fund/stock_3_1_{}.html'.format(page)
            threading.Thread(target=getFundsInfo,args=(baseUrl,)).start()

    注意第一个正则中,因为是html代码所以存在换行符,. 表示任何不包括换行符的字符,所以用[\S\s],\s匹配\t\n\r\f\v中的一个

     

     

    然后就可以进行数据分析了

     

    展开全文
  • 这篇文章主要介绍了基于Python爬取股票数据过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 基本环境配置 python 3.6 pycharm requests csv time...

    这篇文章主要介绍了基于Python爬取股票数据过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    基本环境配置

    • python 3.6
    • pycharm
    • requests
    • csv
    • time

    相关模块pip安装即可

    目标网页

    分析网页

    一切的一切都在图里

    找到数据了,直接请求网页,解析数据,保存数据

    请求网页

    import requests
    
    url = 'https://xueqiu.com/service/v5/stock/screener/quote/list'
    
    response = requests.get(url=url, params=params, headers=headers, cookies=cookies)
    
    html_data = response.json()

    解析数据

    data_list = html_data['data']['list']
    
    for i in data_list:
    
    dit = {}
    
    dit['股票代码'] = i['symbol']
    
    dit['股票名字'] = i['name']
    
    dit['当前价'] = i['current']
    
    dit['涨跌额'] = i['chg']
    
    dit['涨跌幅/%'] = i['percent']
    
    dit['年初至今/%'] = i['current_year_percent']
    
    dit['成交量'] = i['volume']
    
    dit['成交额'] = i['amount']
    
    dit['换手率/%'] = i['turnover_rate']
    
    dit['市盈率TTM'] = i['pe_ttm']
    
    dit['股息率/%'] = i['dividend_yield']
    
    dit['市值'] = i['market_capital']
    
    print(dit)

    保存数据 

    import csv
    
    f = open('股票数据.csv', mode='a', encoding='utf-8-sig', newline='')
    
    csv_writer = csv.DictWriter(f, fieldnames=['股票代码', '股票名字', '当前价', '涨跌额', '涨跌幅/%', '年初至今/%', '成交量', '成交额', '换手率/%', '市盈率TTM', '股息率/%', '市值'])
    
    csv_writer.writeheader()
    
    csv_writer.writerow(dit)
    
    f.close()

     我建立了一个Python学习圈子:1156465813。在彼此的沟通可以我们可以得到很多学习经验,积累知识,群内有2020最新的python学习资料,大家可以一起讨论问题,共同进步。

    展开全文
  • 通过在b站上学习”志斌的python学习笔记“的一篇文章——手把手教你从东方财富网上获取股票数据,再借鉴了相关的代码,对爬虫多少有了一些了解。 在东方财富网上,选择沪深个股,可以看到下面各种各样的股票的一个...

    1.首先要导入几个模块

    import requests
    import pandas as pd
    import re
    import time
    import random
    from sqlalchemy import create_engine

    2.要想爬取一个网页之前要先了解这个网页的源代码,按F12进入开发者工具,得到如下界面:

    找到要爬取的网页的真实页面,可以看到要爬取的数据就在里面。点开Headers可以看到Request URL,所以这个网址就是要爬取的数据的网址。同时pn也代表页数,所以如果想要获取多页的数据,可以写一个for循环。

    3.下面就开始进行数据的爬取。

    #构造请求头,这里在爬虫中添加字典类型的请求头headers的目的是为了将python伪装成一个真实的浏览器,进而促使被访问的网站将python当作一个正常的访问用户。代码如下

    headers={
    'Accept': '*/*',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Connection': 'keep-alive',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36' 
    }

    #生成需要抓取的链接,代码如下

    urls=[]
    for pz in range(1,50):
        urls.append('http://data.eastmoney.com/zjlx/detail.html')

    #循环并通过正则匹配获取相关数据

    info=[]
    for url in urls:
        seconds=random.randint(3,6)
        response=requests.get(url,headers=headers).text
        a=re.findall("f12:'(.*?)'",response)
        b=re.findall("f14:'(.*?)'",response)
        c=re.findall("f2:'(.*?)'",response)
        d=re.findall("f3:(.*?)",response)
        e=re.findall("f62:'(.*?)',",response)
        f=re.findall("f184:'(.*?),'",response)
        g=re.findall("f66:'(.*?)',",response)
        h=re.findall("f69:'(.*?)',",response)
        i=re.findall("f72:'(.*?)',",response)
        j=re.findall("f75:'(.*?)',",response)
        k=re.findall("f78:'(.*?)',",response)
        l=re.findall("f81:'(.*?)',",response)
        m=re.findall("f84:'(.*?)',",response)
        n=re.findall("f87:'(.*?)',",response)
        info.append(pd.DataFrame({'代码':a,'名称':b,'最新价':c,'涨跌幅':d,'主力净流入-净额':e,
                                  '主力净流入-净占比':f,'超大单净流入-净额':g,'超大单净流入-净占比':h,
                                  '大单净流入-净额':i,'大单净流入-净占比':j,'中单净流入-净额':k,
                                  '中单净流入-净占比':l,'小单净流入-净额':m,'小单净流入-净占比':n}))
        time.sleep(seconds)
    这里设置在爬虫的循环中随机停顿几秒,目的是为了减轻被访问网站的流量压力,否则单机在一秒内访问对方十几次甚至上百次,会消耗对方很多资源。也为了防止被访问的网站对爬虫代码实施反爬举措。

    #将存储的所有股票数据进行合并,生成数据表格

    eastmoney=pd.concat(info)

    #最后将数据写到mysql数据库中

    connect=create_engine('mysql+pymysql://root:root@localhost:3306/test?charset=utf-8')
    pd.io.sql.to_sql(eastmoney,connect,schema='test',if_exists='append')

     

     

    展开全文
  • python爬虫第八课:爬取深交所股票数据

    万次阅读 多人点赞 2019-01-11 16:40:31
    由于股票数据在很多网站上都有,但考虑到爬取的难易程度,所以选择在东方财富网上先找到上市公司编号,然后再到百度股票网站提取详细信息。 先定义一个发送请求的函数 def get_page(url): try: ...

    下面我们学习爬取深交所的数据。
    思路如下:
    1.在东方财富网上获取获取所有注册公司的编号。
    2.根据公司编号构造出当天交易信息的url。
    3.提取数据,保存信息。
    由于股票的数据在很多网站上都有,但考虑到爬取的难易程度,所以选择在东方财富网上先找到上市公司编号,然后再到百度股票网站提取详细信息。

    • 先定义一个发送请求的函数
    def get_page(url):
        try:
            r=requests.get(url,headers=headers)
            r.raise_for_status()
            r.encoding=r.apparent_encoding      
            return r.text
        except Exception as e:
            print(e)
    
    • 获得所有注册公司编号
      在东方财富网上找到每个上市公司的信息
      在这里插入图片描述
      url为’http://quote.eastmoney.com/stocklist.html
      在这里插入图片描述
      在源码码中找到注册编码,上图画红线的部分是我们要提取的编码。
      提取公司编号的代码如下
    def get_stock_list(stock_list_url):
        try:
            stock_list=[]
            page=get_page(stock_list_url)
            stocks=re.findall(r'<li><a target="_blank" href="http://quote.eastmoney.com/sz(.*?).html">',page,re.S)
            for stock in stocks:
                stock_list.append(stock)
            return stock_list
        except Exception as e:
            print(e)
    
    • 根据公司编号构造出百度股票的url
    stock_list_url='http://quote.eastmoney.com/stocklist.html'       
    stock_list=get_stock_list(stock_list_url,)
    for stock in stock_list:
        stock_info_url='https://gupiao.baidu.com/stock/sz'+str(stock)+'.html'
    
    • 提取百度股票中的数据
      在这里插入图片描述
      打开源代码,找到里面的信息
      在这里插入图片描述
      提取信息的代码如下:
    def get_stock_info(url,stock):
        try:
            stock_info={}
            page=get_page(url)
            name=re.findall('<a class="bets-name".*?>(.*?)\(',page,re.S)
            name=name[0].strip()
            stock_info['stock']=name
            stock_info['num']=stock
            datas=re.findall(r'<dl><dt>(.*?)</dt><dd.*?>(.*?)</dd>',page,re.S)  
            for data in datas:
                key=data[0]
                val=data[1].strip()
                stock_info[key]=val
            with open("E:\\股票数据.txt","a",encoding="utf-8") as f:
                f.write(str(stock_info) + '\n')
        except Exception as e:
            print(e)
    
    • 主程序
    stock_list_url='http://quote.eastmoney.com/stocklist.html'       
    stock_list=get_stock_list(stock_list_url,)
    count=0
    for stock in stock_list:
        stock_info_url='https://gupiao.baidu.com/stock/sz'+str(stock)+'.html'
        get_stock_info(stock_info_url,stock)
        count=count+1
        print('\r当前进度:{:.2f}%'.format(count*100/len(stock_list)),end='')  #方便显示当前进度
    

    爬取结果
    在这里插入图片描述
    所有代码:

    import requests
    import re
    
    headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"}
    
    def get_page(url):
        try:
            r=requests.get(url,headers=headers)
            r.raise_for_status()
            r.encoding=r.apparent_encoding      
            return r.text
        except Exception as e:
            print(e)
    
    stock_list_url='http://quote.eastmoney.com/stocklist.html'        
    
    def get_stock_list(stock_list_url):
        try:
            stock_list=[]
            page=get_page(stock_list_url)
            stocks=re.findall(r'<li><a target="_blank" href="http://quote.eastmoney.com/sz(.*?).html">',page,re.S)
            for stock in stocks:
                stock_list.append(stock)
            return stock_list
        except Exception as e:
            print(e)
    
    
    def get_stock_info(url,stock):
        try:
            stock_info={}
            page=get_page(url)
            name=re.findall('<a class="bets-name".*?>(.*?)\(',page,re.S)
            name=name[0].strip()
            stock_info['stock']=name
            stock_info['num']=stock
            datas=re.findall(r'<dl><dt>(.*?)</dt><dd.*?>(.*?)</dd>',page,re.S)  
            for data in datas:
                key=data[0]
                val=data[1].strip()
                stock_info[key]=val
            with open("E:\\爬虫\\@爬虫教程\\数据\\股票数据.txt","a",encoding="utf-8") as f:
                f.write(str(stock_info) + '\n')
        except Exception as e:
            print(e)
    
    
    stock_list_url='http://quote.eastmoney.com/stocklist.html'       
    stock_list=get_stock_list(stock_list_url,)
    count=0
    for stock in stock_list:
        stock_info_url='https://gupiao.baidu.com/stock/sz'+str(stock)+'.html'
        get_stock_info(stock_info_url,stock)
        count=count+1
        print('\r当前进度:{:.2f}%'.format(count*100/len(stock_list)),end='')
    
    展开全文
  • 批量爬取股票评论文本数据,包含大量的情感数据,以共分析
  • 手把手教你利用 python 爬虫分析基金、股票

    万次阅读 多人点赞 2021-02-16 22:43:28
    文章目录手把手教你利用 python 爬虫分析基金、股票第一步:基金数据爬取第二步:股票增持计算第三步:好股基金选取 从前大家朋友圈都在晒美食,晒旅游,晒玩乐,现在翻来朋友圈一看,竟然有很多人在晒炒股。这是一...
  • Python:3.8(32bit) IDE:Pycharm OS:win10 访问网页数:996 运行时间:约600s 程序运行截图: 本地文件保存部分效果图: 股票列表网页源码: 包钢股份(600010) 网页信息源码: 昨 收:1145.00 今 开:1139...
  • 本文主要记录关于慕课网上的课程练习,由于时间已久,百度股票网已经不能再用了,因此参考[1]使用的股票网址股城网。 法1 采用requests库 思路:从初始网页获取个股代码,然后获取个股的交易信息,为了方便起见,我...
  • 本文给大家分享的是使用python实现将爬虫爬到的数据存储到mongoDB数据库中的实例代码,有需要的小伙伴可以参考下
  • spider.py: 包括股票名的爬取和网页的爬取 stoke_h.py: 存入Excel文件 stoke_sql.py: 存入数据库 plot.py: 制图及存储图像 stoke_gui.py: GUI界面 运行: python stoke_gui.py
  • Python爬虫股票评论

    2018-03-17 20:37:39
    股民是网络用户的一大群体,他们的网络情绪在一定程度上反映了该股票的情况,也反映了股市市场的波动情况。作为一只时间充裕的研究僧,我课余时间准备写个小代码get一下股民的评论数据,分析以下用户情绪的走势。
  • 编写一个爬虫脚本,用于爬取东方财富网的上海股票代码,并通过爬取百度股票的单个股票数据,将所有上海股票数据爬取下来并保存到本地文件中 系统环境: 64位win10系统,64位python3.6,IDE位pycharm 预备知识: ...
  • 3、爬虫requests请求库、xpath获取数据、代理服务器; 4、selenium用法:无头浏览器、元素定位、显式等待、数据获取; 5、python操作mongodb 02 网站分析 代码和数据我们到后面再贴上,先来分析下目标网站,...
  • 但是作为一个有一定阅历的程序员本能告诉自己,只要掌握了大量的股票数据,就可以在信息渠道落后的情况下,分析出机构大概率的在布局哪些股票,从而在机构拉涨停之前,提前进入分一杯羹。于是,开始编写了爬取股票...
  • 本网站我认为最有意思的就是反爬机制,每次获取网站数据的时候,必须用浏览器将该网页打开,所以就需要调运 ” webbrowser “ 库,最终得到想要的数据。 最后代码如下: # import requests import re import time...
  • 利用python编写了一个爬虫代码,爬取雅虎财经股票交易数据,可以更改URL,爬取其他网站数据
  • 基于Python股票数据爬虫程序设计.pdf
  • python爬虫爬取股票评论, 调用百度AI进行语义分析, matlab数据处理, excel作图 股票涨跌和评论的关系
  • infoDict.update({'股票名称': name.text.split()[0]}) keyList = stockInfo.find_all('dt') valueList = stockInfo.find_all('dd') for i in range(len(keyList)): key = keyList[i].text val = valueList...
  • 通过A股API接口爬取19年股票交易信息,包括开盘收盘最高最低等指标,并利用python对其进行数据可视化,进行股票技术分析。可视化内容包括了k线图、均线图、MACD、RSI、和相关系数。用到的库有numpy、matplotlib、...
  • ​​ ...实时股票数据的重要性 对于四大可交易资产:股票、期货、期权、数字货币来说,期货、期权、数字货币,可以从交易所提供的api收到实时行情数据,而股票由于量化交易接口不面向普通人开放,导.
  • Python爬虫 金融股票数据

    千次阅读 2018-07-21 21:40:20
    /usr/bin/env python import requests #使用requests包 import json #导入json模块 import time #导入时间模块 # 以下是某个新闻网站的行情api,返回json格式数据 data = requests.get(&quot;...
  • python 爬虫Demo 下载每日股票数据

    千次阅读 2019-06-02 17:38:49
    以前写的Python抓取股票资料的项目,因为效率太低后来没有用了,用python跑完一圈大概要几十分钟,没法使用,但是当python的demo还是不错的(后来用java写调用sino js函数的,25秒收集一次全部股票的资料并写入redis...
  • 利用Python股票数据进行定向爬虫

    千次阅读 2019-09-22 19:32:45
    候选数据网站的选择: 新浪股票:https://finance.sina.com.cn/stock/ 百度股票:https://gupiao.baidu.com/stock/ 选取原则:股票信息静态存在于HTML页面中,非js代码生成,没有Robots协议限制。 程序...
  • 股票爬虫python编写,方便学习,新手必备良药!
  • 要想在股市中获得收益,对股票数据进行分析非常重要,要进行数据分析必须有数据,然而数据收集是很费时费力的事情,有些网站中会有我们需要的数据,如果能把这些数据下载到电脑中,对后面使用机器学习算法处理非常...
  • python爬虫】用python爬取股票数据

    千次阅读 2020-05-22 13:41:59
    这几天把学习通的 ...所以这篇文章以笔记的形式,记录一下另一种爬取股票数据的操作 需求分析 目标:获取上交所和深交所所有股票的名称和交易信息 输出:保存到文件中 技术路线:requests & re & panda
  • 实例描述:通过编写爬虫,将指定日期时段内的全部上市公司股票数据爬取下来,并按照股票代码保存到相应的Excel文件中。 这个案例主要分为两大步骤: (1)要知道上市公司有哪些; (2)根据每一个上市公司的...
  • 我用python爬去了起点中文网的一些信息,并且存储到excel中,现在想要实现数据可视化怎么写应该 import requests from lxml import etree from openpyxl import Workbook class Book(): def __init__(p): ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,435
精华内容 1,774
关键字:

python爬虫股票数据

python 订阅
爬虫 订阅