精华内容
下载资源
问答
  • 股票爬虫

    2021-04-23 11:33:27
    股票爬虫(第二篇:代码实现) 文章目录股票爬虫(第二篇:代码实现)前言准备1、新建Maven项目2、需要的依赖、包代码编写1、获取网页返给我们的json2、太乱了,看的眼疼(那就数据清洗一下)3、数据的二次清洗,把...

    股票爬虫(第二篇:代码实现)

    看不懂代码的同学可以去找第一篇看一看

    第一篇点击此链接

    前言

    ​ 写爬虫程序,大家都知道python,其实还有java可以写爬虫,由于博主是大数据分析专业的,而大数据很多框架都和java有关系,所以本篇的代码实现是java。但是别走,此处提供的是思路,你把我的思路用python实现也是可以的。

    准备

    1、新建Maven项目

    2、需要的依赖、包

    这里我们需要的依赖有

    <!-- 有java无UI浏览器美称的htmlunit(爬虫工具)-->
    <dependency>
          <groupId>net.sourceforge.htmlunit</groupId>
          <artifactId>htmlunit</artifactId>
          <version>2.49.1</version>
    </dependency>
    <!-- json的解析依赖-->
    <dependency>
          <groupId>org.json</groupId>
          <artifactId>json</artifactId>
          <version>20210307</version>
    </dependency>
    <!-- 文件的输出依赖-->
    <dependency>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
          <version>2.8.0</version>
    </dependency>
    

    这里我们需要的导包有

    //来自于htmlunit依赖
    import com.gargoylesoftware.htmlunit.BrowserVersion;
    import com.gargoylesoftware.htmlunit.Page;
    import com.gargoylesoftware.htmlunit.WebClient;
    import com.gargoylesoftware.htmlunit.WebResponse;
    //来自于commons-io依赖
    import org.apache.commons.io.FileUtils;
    //来自于org.json依赖
    import org.json.CDL;
    import org.json.JSONArray;
    import org.json.JSONObject;
    //java自己的包
    import java.io.File;
    import java.io.IOException;
    

    代码编写

    1、获取网页返给我们的json

    image-20210423093155649

    //使用指定的BrowserVersion创建web客户端实例。
    WebClient webClient = new WebClient(BrowserVersion.CHROME);
    String url = "http://push2his.eastmoney.com/api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61&klt=101&fqt=1&secid=0.000003&beg=0&end=20500000";
    //方便的方法来构建一个URL并将其加载到当前的WebWindow中
    Page page = webClient.getPage(url);
    //返回最初用于创建此页的web响应
    WebResponse response = page.getWebResponse();
    //使用服务器响应中指定的字符集/编码,以字符串形式返回响应内容。
    String json = response.getContentAsString();
    输出一下,仅作测试,待会删掉
    System.out.println(json);
    

    image-20210423105603707

    2、太乱了,看的眼疼(那就数据清洗一下)

    根据观察,我们需要的数据藏在data对象的klines对象的数组

    image-20210423110202604

    那么我们先把data提炼出来,在刚才代码的基础上,再追加以下代码(你先了解json的语法,才能理解以下代码)

    image-20210423110657494

    //创建JSONObject,把整个json传进去
    JSONObject jsonObject = new JSONObject(json);
    //获取JSON中的对象
    JSONObject mydata = jsonObject.getJSONObject("data");
    //输出一下,仅作测试,待会删掉
    System.out.println(mydata);
    

    我们离klines只剩一点点了

    image-20210423110356538

    //获取对象中的数组
    JSONArray myjsonarry = mydata.getJSONArray("klines");
    

    image-20210423110849256

    3、数据的二次清洗,把数组进行格式化

    将这些json数组转换成字符串数组

    // CDL支持JSON和逗号分隔列表之间的转换
    // String de = CDL.rowToString(myjsonarry);
    // 这里你可以输出以下看一下de是什么玩意
    // 对字符串进行切片
    String[] csv = CDL.rowToString(myjsonarry).split("\",\"");
    //测试,记得删
    for (String buffer:csv) {
         System.out.println(buffer);
    }
    

    然后你会发现csv[0]和csv[csv.length-1]这两个数组元素的头和尾还有个"

    image-20210423111629317

    image-20210423111611497

    再次清洗

    String[] buffer2 = csv[0].split("\"");
    csv[0] = buffer2[1];
    String[] buffer3 = csv[csv.length - 1].split("\"");
    csv[csv.length - 1] = buffer3[0];
    
    //测试,记得删掉
    for (String buffer:csv) {
         System.out.println(buffer);
    }
    

    4、完美

    image-20210423111956012

    5、最后转换成csv文件

    for (String buffer:csv) {
        //第一个参数,创建一个文件
        //第二个参数,将字符串写入文件
        //第三个参数,这个文件的字符集/编码
        //第四个参数,是否是追加(这里填是),因为我是一个元素一个元素的写入
         FileUtils.writeStringToFile(new File("D://testdemo1.csv"), buffer+"\n","UTF-8",true);
    }
    

    完整代码

    public class spiderdemo {
        public static void main(String[] args) throws IOException, InterruptedException {
            WebClient webClient = new WebClient(BrowserVersion.CHROME);
            String url = "http://push2his.eastmoney.com/api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61&klt=101&fqt=1&secid=0.000003&beg=0&end=20500000";
            Page page = webClient.getPage(url);
            WebResponse response = page.getWebResponse();
            String json = response.getContentAsString();
    
            JSONObject jsonObject = new JSONObject(json);
            JSONObject mydata = jsonObject.getJSONObject("data");
    
            JSONArray myjsonarry = mydata.getJSONArray("klines");
    
            // CDL支持JSON和逗号分隔列表之间的转换
            // String de = CDL.rowToString(myjsonarry);
            // 这里你可以输出以下看一下de是什么玩意
            // 对字符串进行切片
            String[] csv = CDL.rowToString(myjsonarry).split("\",\"");
    
            String[] buffer2 = csv[0].split("\"");
            csv[0] = buffer2[1];
            String[] buffer3 = csv[csv.length - 1].split("\"");
            csv[csv.length - 1] = buffer3[0];
            for (String buffer : csv
            ) {
                FileUtils.writeStringToFile(new File("D://testdemo1.csv"), buffer+"\n","UTF-8",true);
            }
            webClient.close();
        }
    }
    

    打开csv文件,数据呈现

    确认信息含义

    这里没有表头,你不知道这些字段是什么对吧?

    image-20210423112608672

    你把鼠标放到网页图标上,然后再对应json信息即可

    image-20210423112914609
    image-20210423113036671

    展开全文
  • 股票爬虫,python编写,方便学习,新手必备良药!
  • 股票爬虫,股票爬虫及数据分析,Python源码
  • 股票爬虫代码

    2017-08-06 16:42:46
    股票爬虫代码
  • python百度股票爬虫

    2018-07-03 11:33:31
    使用Python语言开发的百度股票爬虫程序,没有使用框架,使用了requests库和beautifulsoup库
  • 股票爬虫得到的数据库用于后续数据库处理的资源
  • python股票爬虫

    2019-04-07 12:34:08
    用python requests实现的股票信息抓取,包括当日实时数据和历史数据
  • python开发股票爬虫

    2017-11-16 17:32:07
    使用python开发爬虫,爬取股票信息,并将信息数据导入mysql数据库
  • 2020最新半小时搞定简易股票爬虫(在雪球网上爬取单支股票的的详情)源代码,含GUI界面。使用requests、beautifulsoup、tkinter实现
  • 股票爬虫分享

    2021-01-11 21:04:41
    分享一下我在慕课中学习爬虫后,在股票搜索中的一个实践 具体功能:爬取深证所有股票,获取当天价格,并保存在磁盘的txt文件中 #-*- codeing = utf-8 -*- #@File : gupiao_example.py #@Software: PyCharm import ...

    分享一下我在慕课中学习爬虫后,在股票搜索中的一个实践

    具体功能:爬取深证所有股票,获取当天价格,并保存在磁盘的txt文件中

    #-*- codeing = utf-8 -*-
    #@File : gupiao_example.py
    #@Software: PyCharm
    
    import re
    import requests
    from bs4 import BeautifulSoup
    
    #定义获取网页内容的函数
    def geturlcontent(url):    #可以多加一个参数 code,加快搜索速度
        try:
            headers = {
                'cookie': 'td_cookie=18446744071423230592; thw=cn; v=0; cna=SCVpFkZXfCwCAT24cx3PJgie; t=6adef129ce0b98c6fcd52f3e83e3be03; cookie2=7de44eefb19e3e48e25b7349163592b7; _tb_token_=f1fae43e5e551; unb=3345403123; uc3=nk2=F6k3HMt8ZHbGobgMG0t6YMg7MKU%3D&vt3=F8dByuQFmIAq493a88Y%3D&lg2=W5iHLLyFOGW7aA%3D%3D&id2=UNN5FEBc3j%2FI9w%3D%3D; csg=07879b0c; lgc=t_1499166546318_0384; cookie17=UNN5FEBc3j%2FI9w%3D%3D; dnk=t_1499166546318_0384; skt=759aebdc118b2fc5; existShop=MTU3NTEwNzAyMg%3D%3D; uc4=id4=0%40UgQxkzEr7yNNkd0wQjAOQOK5hAra&nk4=0%40FbMocp0bShNOwIAboxPdw7pZW0Ru%2FnrngZiTM4a03Q%3D%3D; tracknick=t_1499166546318_0384; _cc_=UIHiLt3xSw%3D%3D; tg=0; _l_g_=Ug%3D%3D; sg=439; _nk_=t_1499166546318_0384; cookie1=B0TwtzQNNmewbhSpcaaRe7U24nc6DXOpwhexZLEN8Zo%3D; mt=ci=0_1; _m_h5_tk=ec0a32b82d6a8d5c46fe6f873373169b_1575114952532; _m_h5_tk_enc=cfea89ad4f02b520c3a094931d00e376; enc=CnjhIlaGaoA3J%2FSi2PeXU8%2FNC4cXQUAZjulyZI%2Bd9Z8JjGflldsE%2F%2B8F0Ty2oLD4v1wKgm3CuiGftr11IfyB5w%3D%3D; hng=CN%7Czh-CN%7CCNY%7C156; l=dBIBcdfeq5nSzFl5BOCa-urza77ThIRvfuPzaNbMi_5Ia1T6YV7OknJtce96cjWfTG8B4HAa5Iy9-etlwrZEMnMgcGAw_xDc.; uc1=cookie15=VFC%2FuZ9ayeYq2g%3D%3D&cookie14=UoTbmEp9zNxMrw%3D%3D; isg=BDk53DNPQMq9RRxe_Fnoei4wSKUTRi34hR8HPVturmDf4ll0o5Y9yKc0YOYUrsUw',
                'user-agent': 'Mozilla/5.0'}
            r=requests.get(url,headers=headers)
            r.raise_for_status()
            r.encoding=r.apparent_encoding  ##可以手工添加
            return r.text
        except:
            print("网页读取错误")
    
    
    #获取网页所有股票代码列表
    def getstocklist(list,html):
    
        soup=BeautifulSoup(html,"html.parser")
        a=soup.find_all("a")
        for i in a:
            try:
                href=i.string
                list.append(re.findall(r"\d{6}",href)[0])
            except:
                continue
    
    
    #处理列表,并保存为txt文件
    def savestocklist(url,list,path):
        count=0
        info={}
        try:
            for i in list:
                saveurl=url+i
                html=geturlcontent(saveurl)
                soup=BeautifulSoup(html,"html.parser")
                stockname=soup.find("div",attrs={"class":"stock-name"}).string.split("(")[0]
                stockprice=soup.find("div",attrs={"class":"stock-current"}).string.split("¥")[1]
                info[stockname]=stockprice
                count = count + 1
                print("\r当前进度: {:.2f}%".format(count * 100 / len(list)), end="")
    
            with open(path,"a",encoding="utf-8") as f:
                f.write(str(info)+"\n")
    
        except:
            count = count + 1
            print("\r当前进度: {:.2f}%".format(count * 100 / len(list)), end="")
            print("")
    
    
    #定义主函数
    def main():
        list = []
        path = "D:\\stock.txt"
        stock_list_url="https://www.banban.cn/gupiao/list_sz.html"  #获取股票列表的网站
        stock_info_url="https://xueqiu.com/S/SZ"          #获取股票信息的网站
        html=geturlcontent(stock_list_url)
        getstocklist(list,html)
        savestocklist(stock_info_url,list,path)
    
    
    
    main()
    

    进度条及结果如下:

    在这里插入图片描述

    在这里插入图片描述
    保存结果的形式仍有待优化,欢迎讨论!!

    展开全文
  • 文章目录股票爬虫(第一篇)1 前言2 分析网页第一步:进入到需要爬取信息的页面image-20210423090826019第二步:打开Chrome的调试工具(F12)第三步:看看网页会给你发什么消息刷新网页,等待下图不动了再操作在此...

    股票爬虫(第一篇:分析)

    1 前言

    ​ 本教程仅为学习研究,请勿拿去干坏事。博主是大数据分析专业的,当前还在做毕设。数据源为东方财富网的api,主要爬取日K、周K、月K,以及分钟K线。

    2 分析网页

    ​ 作为程序员,分析是家常便饭,你得先去看看网页给你什么了

    第一步:进入到需要爬取信息的页面

    image-20210423090533090

    image-20210423090746814

    image-20210423090826019

    这就是我们要分析的页面

    image-20210423091101141

    第二步:打开Chrome的调试工具(F12)

    image-20210423091717499

    第三步:看看网页会给你发什么消息

    一个网页先给你发一堆消息,发完之后就会停下,那么这时候我们就要开始操作了😏

    刷新网页,等待下图不动了再操作

    以下是代表网页给你发送的信息资源

    image-20210423090851774

    在此页面点击日K

    image-20210423091144773

    观察控制台

    image-20210423091653322

    选取

    鼠标点一下给你发的新内容,会出现这个

    image-20210423091751094

    你把它拉开,直到覆盖所有

    image-20210423092430688

    然后你就会看到以下7个内容

    image-20210423091821378

    逐步、逐个分析,直到……

    我们先看get开头的,因为这个是向服务的请求(分get和post方法)

    点进去分析一波

    image-20210423092205207

    你会发现,好家伙,我要的是日K,服务器给我发的啥😡

    image-20210423092644654

    很明显不是这个,那么我们换一个get看一看

    直到你找到想要的信息

    image-20210423093155649

    找到了!

    第四步:查看请求头,并分析URL

    image-20210423092526799

    URL分析

    http://push2his.eastmoney.com/api/qt/stock/kline/get?cb=jQuery11240455198475929842_1619140536920&fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61&ut=7eea3edcaed734bea9cbfc24409ed989&klt=101&fqt=1&secid=0.000001&beg=0&end=20500000&_=1619140536941

    把以上链接可以直接放到浏览器地址栏上面

    image-20210423092214861

    他会给你返回一大堆数据(这类数据是以Json的形式给你的)

    Tips:😏如果你显看的眼累,可以→浏览器调试工具F12→Network→刷新网页→点击资源包→preview

    这里什么信息是对我们有用的呢咱们可以用排除法,get方法是用&分割参数的,那么咱们可以看到上面的URL有cb、fields1、fields2、ut、klt、fqt、secid(这明显就是我的股票代码)、beg、end

    排除法:一个一个参数的删除,看他还会不会给你那些信息(你也可以点下周K,对比对比URL的区别)

    最后清洗出来的URL是这样的

    http://push2his.eastmoney.com/api/qt/stock/kline/get?fields1=f1%2Cf2%2Cf3%2Cf4%2Cf5%2Cf6&fields2=f51%2Cf52%2Cf53%2Cf54%2Cf55%2Cf56%2Cf57%2Cf58%2Cf59%2Cf60%2Cf61&klt=101&fqt=1&secid=0.000001&beg=0&end=20500000

    你会发现klt=101是日K,klt=102是周K,secid是股票代码,end是最后的日期

    f61&klt=101&fqt=1&secid=0.000001&beg=0&end=20500000

    你会发现klt=101是日K,klt=102是周K,secid是股票代码,end是最后的日期

    知道了该爬取的URL之后,我们就要开始编写代码了

    股票爬虫下一篇:编写代码,开始贪婪地获取吧

    股票爬虫第二篇

    展开全文
  • 完整的股票爬虫记录见这篇文章: 这里是一个简洁版的,方便初学者更详细的讲解爬虫细节: 股票列表从东风财富获取,个股信息从雪球网获取 首先,我们先看看雪球网的个股信息,这里我们截图格力电器代码查看; 注意...

    完整的股票爬虫记录见这篇文章

    这里是一个简洁版的,方便初学者更详细的讲解爬虫细节:

    股票列表从东风财富获取,个股信息从雪球网获取

    首先,我们先看看雪球网的个股信息,这里我们截图格力电器代码查看;
    注意我们最终要查的是所有的个股信息

    在这里插入图片描述
    仔细查看可知,每一个个股第一个父标签都是<div class="container-sm float-left stock__main">,后面是子标签,包括各种分类信息,如股票名称,今开,最高等等,我们先拷贝一段简洁代码做基础演示说明;

    s = '''
    <div class="container-sm float-left stock__main">
    <div class="stock-name">格力电器(SZ:000651)</div>
    <td>今开:<span class="stock-rise">60.00</span></td>
    <td>涨停:<span class="stock-rise">65.62</span></td>
    <td>成交量:<span>58.54万手</span></td>
    ...
    </div>
    '''
    

    然后开始解析代码,目的是获取上述页面中“股票名称,今开,涨停,成交量”的键值对信息,并保存到本地文件;

    from bs4 import BeautifulSoup
    
    infodict={}       #用于保存键值对信息
    soup = BeautifulSoup(s,"html.parser")
    
    '''先选定每一个个股的父标签,方便后续更精准的查找'''
    stockinfo = soup.find('div',attrs={"class":"container-sm float-left stock__main"})
    
    '''查找股票名称信息,并保存到字典中'''
    stock_name = stockinfo.find('div',attrs={"class":"stock-name"})
    infodict.update({'stock_name':stock_name.text.split()[0]}) 
    
    '''查找股票的交易信息,如‘今开’,‘涨停’等信息,并保存到字典中'''
    keylist = stockinfo.find_all('td')   #查找所有td标签
    print(keylist)
    if len(keylist):
        for i in range(len(keylist)):
            key = keylist[i].text
            print(key)
    

    运行结果如下:
    在这里插入图片描述
    进一步操作,我们把数据分开成两列

    if len(keylist):
        for i in range(len(keylist)):
            key = keylist[i].text.split(':')   #注意分隔符最好从代码页拷贝,中英文之别
            print(key)
    


    根据上面的结果,提取key,提取value,把key和value更新到字典

    if len(keylist):
        for i in range(len(keylist)):
            key = keylist[i].text.split(':')[0]
            value = keylist[i].text.split(':')[-1]
            infodict[key]=value
    print(infodict)
    

    在这里插入图片描述
    继续,把字典的内容保存到本地test.txt文档

    with open('test.txt','a') as f:
        f.write(str(infodict))  #字典格式要先转换成字符串,才能保存到text中
        f.close()
    

    找到本地test.txt文档,打开查看结果:
    在这里插入图片描述
    附加题:

    1.另外一种字典保存到本地的方法,json.dumps()

    import json
    content = json.dumps(infodict)
    with open('testjson.txt','a') as f:
        f.write(str(infodict))
        f.close()
    

    在这里插入图片描述
    2.保存为excel的方法

    import pandas as pd
    df=pd.DataFrame(infodict,index=[0])
    df.to_excel('testexcel.xlsx')
    

    打开看看结果如何:
    在这里插入图片描述
    成功了~

    展开全文
  • 股票爬虫实例程序

    2018-08-10 16:20:51
    import requests from bs4 import BeautifulSoup import bs4 def getHTMLText(url): try: r = requests.get(url,timeout=30) r.raise_for_status() r.encoding=r.apparent_encoding return r.text ...
  • 互联网金融爬虫怎么写-第二课 雪球网股票爬虫(正则表达式入门) 互联网金融爬虫怎么写-第三课 雪球网股票爬虫(ajax分析)   哈哈,我又来了,话说出教程就是这么任性,咱们乘热打铁,把上节课分析完成但是没...
  • 大家好啊,话说好久没有出来活动了,组织上安排写代码写了很久,终于又被放出来写教程了,感谢...互联网金融爬虫怎么写-第二课 雪球网股票爬虫(正则表达式入门)   工具要求与基础知识: 工具要求: ...
  • 1.写一个股票爬虫程序,实现输入任何一个股票名称和任意时间段会输出以下数据:以股票名称命名的csv文件,包含字段(日期,成交量,开盘价,最高价,最低价,收盘价); 2.基于5日K线与10日K线建立一个股票策略分析...
  • 系列教程《互联网金融爬虫怎么写》第一课,详细讲解了如何开发爬虫爬取一些有名的电商网站数据。对于学习爬虫的开发者有很大帮助,... 第五课主要以爬取股票网站上的信息为例,主要讲解了爬虫里经常使用的正则表达式。
  • 爬虫 - 股票爬虫实例之雪球网

    千次阅读 2020-04-12 17:30:08
    跟着老师做的,但是老师讲的百度股票已经没有了,所以用雪球网替代了,不过没有输出,也没有报错,请大神帮忙看看什么问题,谢谢! import re import requests from bs4 import BeautifulSoup def getHTMLText(url,...
  • 网易财经股票爬虫

    2018-12-06 11:40:56
    以下#内的内容为检验内容,根据需要自己开启 导入需要的包: import requests from bs4 import BeautifulSoup import bs4 import urllib.request 查看网页链接的格式,发现规律: ...seaso...
  • lst.append(re.findall(r"[s][hz]\d{6}", href)[0]) except: continue ## 根据股票编号获取股票信息并存储 def getStockInfo(lst, stockURL, fpath): count = 0 for stock in lst: url = stockURL + stock + "....
  • 爬虫 - 股票爬虫实例之腾讯证券

    千次阅读 2020-06-07 19:05:57
    这里用的网站是腾讯证券,更详细的版本参考另一篇爬雪球网站股票: import bs4 from bs4 import BeautifulSoup import requests import re import pandas as pd #获取网页源代码 def gethtml(url): try: kv = {'...
  • 股票爬虫项目总结

    2018-05-06 11:15:00
    通过爬取雅虎财经上的股票数据,并绘制出股价的K-折线图,实现了买入\卖出股票时机的分析。在这个过程中发现了几个以前新问题,记录如下: 1、python中日期与时间处理模块(date和datatime) time模块主要用于时间...
  • 股票爬虫数据源

    2018-04-27 18:52:38
    股票列表 http://quote.eastmoney.com/stocklist.html业绩报表 http://data.eastmoney.com/bbsj/stock000002/yjbb.html
  • 股票数据爬虫数据源股城网,重心放在多支股票的概览信息上【未放在单只股票历史数据的分析与可视化,这一点也值得去做】; 绘图用matplotlib,涉及饼图、柱状图、雷达图的设计、实现和优化,值得参考;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,682
精华内容 2,672
关键字:

股票爬虫

爬虫 订阅