精华内容
下载资源
问答
  • Python爬取历史天气数据作者:梅昊铭1. 导读之前Mo给大家分享过杭州历年天气情况的数据集,相信有不少小伙伴好奇这些数据是怎么获取。今天Mo就来教大家如何使用Python来进行历史天气数据的爬取。本文的内容只要求...

    Python爬取历史天气数据

    作者:梅昊铭

    1. 导读

    之前Mo给大家分享过杭州历年天气情况的数据集,相信有不少小伙伴好奇这些数据是怎么获取。今天Mo就来教大家如何使用Python来进行历史天气数据的爬取。本文的内容只要求大家熟悉 Python 即可,欢迎大家跟着小Mo一起学习。

    2. 准备工作

    2.1 目标网站分析

    在爬取数据之前,我们首先要对爬取的目标网站进行分析,弄清楚爬取的页面和数据在哪里,然后再利用 Python 工具进行数据爬取。

    首先,设定爬取数据的目标网站为2345天气预报网,然后进入历史天气数据页面并设定目标城市为杭州。

    然后分析该网页,我们发现改变相应的年月网页的 URL 并没有发生改变,这说明网页上的数据是动态加载的。我们打开 Chrome 浏览器的DevTools,再改变年月,发现该页面动态加载了一个 js 文件。

    1460000022498652

    仔细分析后,我们发现每改变一次年月,该页面就动态加载一个 js 文件。点开对应的 js 链接,我们就可以发现每个月份的历史数据是通过请求一个 js 数据文件获取的。

    1460000022498653

    接着我们使用 Python 对每一个 js 文件进行分析,就可以获取相应月份的历史天气数据了。

    2.2 Python 库

    利用 Python 进行数据爬取时,我们常用的一些库有requests, Beautifulsoup, scrapy等。本文中,我们使用 requests 工具来获取历史天气数据的 js 数据文件,并用 demjson 工具包对返回的非标准 json 数据格式进行解析。最后,使用 csv 包将获取的历史数据存到csv文件中。

    本教程中使用的Python 第三方库:requests, demjson。

    3. 数据爬取

    3.1 构造URL列表

    通过前面的分析,我们已经了解到每个月份的历史天气数据是通过一个 Javascript 文件获取的。因此,我们需要构造带爬取数据的 URL 列表,再批量爬取数据。

    # 构造2019全年的月份列表

    months = []

    for year in (2019,):

    for month in range(12):

    months.append("%d%02d"%(year, month+1))

    todo_urls = [

    "http://tianqi.2345.com/t/wea_history/js/"+month+"/58457_"+month+".js"

    for month in months

    ]

    3.2 批量下载数据

    使用 requests 库获取 js 文件中的数据,并存到 datas 变量中。

    import requests

    datas = []

    for url in todo_urls:

    r = requests.get(url, headers = headers)

    if r.status_code!=200:

    raise Exception()

    # 去除javascript前后的字符串,得到一个js格式的JSON

    data = r.text.lstrip("var weather_str=").rstrip(";")

    datas.append(data)

    3.3 解析数据

    我们从 js 文件获取的数据 json 格式存储的,需要使用 demjson 对数据进行解析。

    # 解析所有月份的数据

    all_datas = []

    for data in datas:

    tqInfos = demjson.decode(data)["tqInfo"]

    all_datas.extend([x for x in tqInfos if len(x)>0])

    3.4 将结果导入 csv 文件

    import csv

    with open('./hangzhou_tianqi_2019.csv', 'w', newline='', encoding='utf-8') as csv_file:

    writer = csv.writer(csv_file)

    columns = list(all_datas[0].keys())

    writer.writerow(columns)

    for data in all_datas:

    writer.writerow([data[column] for column in columns])

    3.5 结果展示

    1460000022498655

    4. 参考资料

    关于我们

    Mo(网址:https://momodel.cn) 是一个支持 Python的人工智能在线建模平台,能帮助你快速开发、训练并部署模型。

    近期 Mo 也在持续进行机器学习相关的入门课程和论文分享活动,欢迎大家关注我们的公众号获取最新资讯!

    1460000022498654

    1460000021833835

    展开全文
  • python爬取股票数据

    千次阅读 2017-12-14 11:30:14
    今天主要给大家介绍的是使用python爬取网易财经模块股票历史数据.先来介绍一下环境: 1、版本:python2.7 2、使用beautisoup模块 以仙珺制药(股票代码:002332)为例,首先打开获取历史股票行情的网页,网页地址为:...

    今天主要给大家介绍的是使用python爬取网易财经模块股票的历史数据.先来介绍一下环境:

    原始文档:http://mp.weixin.qq.com/s/18H_MYCKT3MMXM13WQCOqQ

    1、版本:python2.7

    2、使用beautisoup模块

    以仙珺制药(股票代码:002332)为例,首先打开获取历史股票行情的网页,网页地址为:http://quotes.money.163.com/trade/lsjysj_002332.html?year=2017&season=1本文主要获取从上市时间到目前为止所有的行情数据.网页截图为如下:


    网页源码如下:下面就是使用python爬取数据信息

    爬取数据为分为一下几个步骤:

    1、构造url地址
    2、下载html网页,主要是用urllib2库
    def down_load(url,try_times=2):
    	req = urllib2.Request(url)
    	try:
    		response = urllib2.urlopen(req)
    		html = response.read()
    		return html
    	except urllib2.URLError as e:
    		print 'down error',e.reason
    		html = None
    		if try_times > 0 :
    			if hasattr(e, 'code') and 500 <= e.code < 600:
    				return download(url,try_times-1)

    3、解析网页,保存文件,解析网页主要是用beautifulsoup.具体如下:

    soup_pakge = BeautifulSoup(html)
    	#解析html先解析表头
    	#print(HEADERS)
    	soup_head=soup_pakge.findAll('table','table_bg001 border_box limit_sale')

    爬取的数据结果如下:

    获取源码请关注公众号(CPPguy),发送:股票.就会接收到下载代码的链接和密码.

    原始文档:http://mp.weixin.qq.com/s/18H_MYCKT3MMXM13WQCOqQ

    展开全文
  • python爬取网络历史天气数据
  • 资源包含:1. 操作文档;2. Python源代码和注释;3. 爬取到的历年双色球数据,蓝色和红色...爬取目标网页中的历史双色球开奖号码以及一等奖二等奖中奖注数的数据,将数据保存到名为(历史双色球.xlsx)的Excel文件中。
  • 某天气网站(www.数字.com)存有2011年至今的天气数据,有天看到一本爬虫教材提到了爬取这些数据的方法,学习之,并加以改进。准备爬的历史天气爬之前先分析url。左上有年份、月份的下拉选择框,按F12,进去看看能否...

    某天气网站(www.数字.com)存有2011年至今的天气数据,有天看到一本爬虫教材提到了爬取这些数据的方法,学习之,并加以改进。

    20191230152216106.png?20191130152231

    准备爬的历史天气

    爬之前先分析url。左上有年份、月份的下拉选择框,按F12,进去看看能否找到真正的url:

    20191230152243357.png?20191130152253

    很容易就找到了,左边是储存月度数据的js文件,右边是文件源代码,貌似json格式。

    双击左边js文件,地址栏内出现了url:http://tianqi.数字.com/t/wea_history/js/54511_20161.js

    url中的“54511”是城市代码,“20161”是年份和月份代码。下一步就是找到城市代码列表,按城市+年份+月份构造url列表,就能开始遍历爬取了。

    城市代码也很诚实,很快就找到了:

    20191230152312282.jpg?20191130152333

    下一步得把城市名称和代码提取出来,构造一个“城市名称:城市代码”的字典,或者由元组(城市名称,城市代码)组成的列表,供爬取时遍历。考虑到正则提取时,构造元组更便捷,就不做成字典了。

    def getCity():

    html = reqs.get('https://tianqi.2345.com/js/citySelectData.js').content

    text = html.decode('gbk')

    city = re.findall('([1-5]\d{4})\-[A-Z]\s(.*?)\-\d{5}',text) #只提取了地级市及以上城市的名称和代码,5以上的是县级市

    city = list(set(city)) #去掉重复城市数据

    print('城市列表获取成功')

    return city

    接下来是构造url列表,感谢教材主编的提醒,这里避免了一个大坑。原来2017年之前的url结构和后面的不一样,在这里照搬了主编的构造方法:

    def getUrls(cityCode):

    urls = []

    for year in range(2011,2020):

    if year <= 2016:

    for month in range(1, 13):

    urls.append('https://tianqi.数字.com/t/wea_history/js/%s_%s%s.js' % (cityCode,year, month))

    else:

    for month in range(1,13):

    if month<10:

    urls.append('https://tianqi.数字.com/t/wea_history/js/%s0%s/%s_%s0%s.js' %(year,month,cityCode,year,month))

    else:

    urls.append('https://tianqi.数字.com/t/wea_history/js/%s%s/%s_%s%s.js' %(year,month,cityCode,year,month))

    return urls

    接下来定义一个爬取页面的函数getHtml(),这个是常规操作,用requests模块就行了:

    def getHtml(url):

    header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1',

    'Referer': '******'}

    request = reqs.get(url,headers = header)

    text = request.content.decode('gbk') #经试解析,这里得用gbk模式

    time.sleep(random.randint(1,3)) #随机暂停,减轻服务器压力

    return text

    然后就是重点部分了,数据解析与提取。

    试了试json解析,发现效果不好,因为页面文本里面含杂质。

    还是用正则表达式吧,能够提取有效数据,尽可能少浪费机器时间。

    2016年开始的数据和之前年份不一样,多了PM2.5污染物情况,因此构造正则表达式时,还不能用偷懒模式。

    str1 = "{ymd:'(.*?)',bWendu:'(.*?)℃',yWendu:'(.*?)℃',tianqi:'(.*?)',fengxiang:'(.*?)',fengli:'(.*?)',aqi:'(.*?)',aqiInfo:'(.*?)',aqiLevel:'(.*?)'.*?}"

    str2 = "{ymd:'(.*?)',bWendu:'(.*?)℃',yWendu:'(.*?)℃',tianqi:'(.*?)',fengxiang:'(.*?)',fengli:'(.*?)'.*?}"

    #这个就是偷懒模式,取出来的内容直接存入元组中

    如果严格以2016年为界,用一下偷懒模式还行,但本人在这里遇坑了,原来个别城市的污染物信息是时有时无的,搞不清在某年某月的某天就出现了,因此还得构造一个通用版的,把数据都提出来,再把无用的字符去掉。

    def getDf(url):

    html = getHtml(url)

    pa = re.compile(r'{(ymd.+?)}') #用'{ymd'打头,把不是每日天气的其它数据忽略掉

    text = re.findall(pa,html)

    list0 = []

    for item in text:

    s = item.split(',') #分割成每日数据

    d = [i.split(':') for i in s] #提取冒号前后的数据名称和数据值

    t = {k:v.strip("'").strip('℃') for k,v in d} #用数据名称和数据值构造字典

    list0.append(t)

    df = pd.DataFrame(list0) #加入pandas列表中,便于保存

    return df

    数据的保存,这里选择了sqlite3轻便型数据库,可以保存成db文件:

    def work(city,url):

    con =sql.connect('d:\\天气.db')

    try:

    df = getDf(url)

    df.insert(0,'城市名称',city) #新增一列城市名称

    df.to_sql('total', con, if_exists='append', index=False)

    print(url,'下载完成')

    except Exception as e:

    print("出现错误:\n",e)

    finally:

    con.commit()

    con.close()

    在这里还有一个小坑,第一次连接数据库文件时,如果文件不存在,会自动添加,后续在写入数据时,如果数据中新增了字段,写入时会报错。可以先把数据库文件字段都设置好,但这样太累,所以本人又搞了个偷懒的方式,即先传入一个2019年某月的单个url搞一下,自动添加好字段,后面再写入时就没问题了。本人觉得这个应该还有更佳的解决办法,目前还在挖掘中。

    数据保存后的状态如下:

    20191230152442143.png?20191130152455

    本来考虑过用多线程爬虫,想想又觉得既然人家没有设置反爬措施,咱们也不能太不厚道了,就单线程吧。

    最终爬了334个城市,100多万条数据。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • 主要介绍了Python爬取股票信息,并可视化数据的示例,帮助大家更好的理解和使用python爬虫,感兴趣的朋友可以了解下
  • 主要介绍了用python爬取历史天气数据的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • python爬取股票数据并存到数据库

    千次阅读 2021-03-27 01:37:49
    Python 用Tushare接口获取股票数据并存储到Sqlite数据库 使用技术介绍: 关于接口 由于tushare旧版本即将不能用了,所以我们这里使用的是tushare pro 接口。 关于数据库 使用了Sqlite轻量级数据库适合本地使用。 ...

    Python 用Tushare接口获取股票数据并存储到Sqlite数据库

    1. 使用技术介绍:
      关于接口 由于tushare旧版本即将不能用了,所以我们这里使用的是tushare pro 接口。

      关于数据库 使用了Sqlite轻量级数据库适合本地使用。

      关于爬取的数据 共12种数据,如下ts_code,trade_date,open,high,low,close,pre_close,change,pct_chg,vol,amount, avgprice

      关于py文件 共三个 分别是Tushare.py, config.py, SQLserver .py

    2. 具体实现

    要import的库

    import tushare as t1# t1 是旧版本后面的ts = t1.pro_api() 是变为pro版本
    import time # 用以计时
    from config import * # 此库为配置库
    from SQLserver import * # 此库为作者所写
    
    1. Tushare Pro 爬取数据
      Pro接口需要前往官网(https://tushare.pro/)注册,并获取token,过程较为繁琐,而本文篇幅有限故将在之后更新获取token文章。
      将获取到的token值放进config文件中的tushare字典中。
    # -*- coding: utf-8 -*-
    """此为存放配置信息的config.py"""
    tushare = {"token":"", "column": ['ts_code', 'trade_date', 'open', 'high', 'low', 'close', 'pre_close', 'change', 'pct_chg', 'vol', 'amount'],} # 冒号里为您的token值
    dbPath = r'\database.db' # 数据库路径
    Stock_list={"平安银行": "000001.SZ","万科A": "000002.SZ",
                  "国华网安": "000004.SZ",
                  "世纪星源": "000005.SZ",
                  "深振业A": "000006.SZ",
                  "全新好": "000007.SZ"} # 股票名称和代码字典 有需要的我会在后续写如何获取名称和列表的文章
    
    
    class Fetch_Data():
        """code股票代码 sd开始日期 ed结束日期"""
    
        def __init__(self, code, start_data, end_data):
            self.code = code
            self.sd = start_data
            self.ed = end_data
            # self.csv_name = "csv_data/" + csv_name + ".csv"
    
        def web_spider(self):  # 爬虫tushare接口
            try:
                df = ts.daily(ts_code=self.code, start_date=self.sd, end_date=self.ed)  # 爬取数据--dataframe格式
                # daily方法所获取的数据ts_code,trade_date,open,high,low,close,pre_close,change,pct_chg,vol,amount,avgprice
                # df.to_csv(self.csv_name) # 转换为csv文件
                return df  # 返回数据
            except Exception as e:
    			print(e) # 打印报错信息
    

    当然仅有这段代码是不行的,我们还需要初始化tushare接口。初始化本写在main中,这里为了方便大家使用提到前面来说。

            t1.set_token(tushare["token"])  # 存在config里的token值
            ts = t1.pro_api()  # 初始化pro接口
    

    2.存储到Sqlite数据库

    # 存储到数据库
    class Sql_Data_Handle():
        def __init__(self, df, connect, curs):
            self.df = df
            self.connect = connect
            self.curs = curs
    
        def character(self):
            # df = pandas.read_csv(self.csv_name, encoding='gbk') # 用pandas库读取csv文件
            line_num = self.line_num
            # pandas的iloc函数读取每行对应数据
            ts_code = self.df.iloc[line_num]["ts_code"]
            trade_date = self.df.iloc[line_num]["trade_date"]
            open = self.df.iloc[line_num]["open"]
            high = self.df.iloc[line_num]["high"]
            low = self.df.iloc[line_num]["low"]
            close = self.df.iloc[line_num]["close"]
            pre_close = self.df.iloc[line_num]["pre_close"]
            change = self.df.iloc[line_num]["change"]
            pct_chg = self.df.iloc[line_num]["pct_chg"]
            vol = self.df.iloc[line_num]["vol"]
            amount = self.df.iloc[line_num]["amount"]
            # 将数据转换为元祖tuple格式
            values = (
                ts_code, trade_date, float(open), float(high), float(low), float(close), float(pre_close),
                float(change), float(pct_chg), float(vol), float(amount))
            return values
        def add_data(self):
    
            self.line_num = len(self.df) - 1
            # 循环调用character()函数-读取每行数据
            while self.line_num >= 0:
                value_list = self.character()
                try:
                    # 插入数据库
                    Sql.Sql_execution(
                        f"""insert into stock ({tushare["Column"]}) values """ + f"(\'{value_list[0]}\',\'{value_list[1]}\',\'{value_list[2]}\',\'{value_list[3]}\',\'{value_list[4]}\',\'{value_list[5]}\',\'{value_list[6]}\',\'{value_list[7]}\',\'{value_list[8]}\',\'{value_list[9]}\',\'{value_list[10]}\')")
                except Exception:
                    # 出错信息
                    print(f"{value_list[0]}-{value_list[1]}未被添加!")
                self.line_num -= 1
                i += 1
            print(f"The data has been added to the stock database")
            return i
    

    3.主函数
    包括了连接数据库 初始化tushare Pro接口 调用Fetch_Data,Sql_Data_Handle类 计算添加用时和添加数据条数的功能。

    if __name__ == '__main__':
        count = 0
        line_count = len(Stock_list)
        print("连接数据库")
        Sql = DataServer_Sqlite3("stock")  # 连接数据库
        stock_code = Stock_list
        # Sql.Empty_database()  # 清空数据库
        # print("清空数据库")
        # Sql.Zero_Id()  # 将ID归零
        # print("将ID归零")
    for key in stock_code:
        try:
            column = tushare["column"] # config中的tushare字典
            t1.set_token(tushare["token"])  # token值
            ts = t1.pro_api()  # 初始化pro接口
            print("初始化pro接口成功")
            input_code = stock_code[key]
            sd, ed = "20181231", "20201231"  # 起始日期,结束日期
            print(f"抓取{key}股票数据")
            start = time.perf_counter()  # 开始时间
            df = Fetch_Data(input_code, sd, ed).web_spider()  # dataframe格式股票数据
            line_num = Sql_Data_Handle(df, Sql.connection, Sql.curs).add_data()
            end = time.perf_counter()  # 结束时间
            # 记录用时
            print(f"添加{key}股票数据到数据库--成功,用时{start - end}")
            # 记录添加的数据条数
            print(f"{key} 共{line_num}条数据已添加到数据库!")
        except Exception as e:
            print e
        count += 1
        print(f"还剩{line_count - count}支股票...")
    

    4.SQLserver作者用来处理sql语句所写的类。包括了连接数据库,执行sql语句,删除数据,拿取数据,清空数据库,归零id 功能。方便使用者使用。

    # -*- coding: utf-8 -*-
    """此为处理sql语句的SQLserver.py"""
    import sqlite3
    import config
    
    
    class DataServer_Sqlite3():
        def __init__(self, db_name):
            self.curs = ''
            self.connection = ''
            self.header = ''
            self.data = ''
            self.db_name = db_name
            self.Connecting_database()
    
        def Connecting_database(self):
            self.connection = sqlite3.connect(config.dbPath)  # 连接数据库
            self.curs = self.connection.cursor()
    
        def Sql_execution(self, sql: str):
            self.curs = self.curs.execute(sql)
            self.connection.commit()
    
        def delete_data(self, key, data):
            self.curs = self.curs.execute(f"delete from " + key + " where trade_date=" + data)
            self.connection.commit()
            print("The data has been deleted")
    
        def Fetch_data(self):
            self.header = self.curs.description
            self.data = self.curs.fetchall()
    
        def Empty_database(self, db_name: str):
            self.curs = self.curs.execute(f"DELETE FROM \"{db_name}\"")
            self.connection.commit()
    
        def Zero_Id(self):
            self.curs = self.curs.execute(f"update sqlite_sequence set seq=0 where name='{self.db_name}'")
            self.connection.commit()
    
        def Create_table(self, name: str, input_header: str):
            """sample: input_header =int primary key,ts_code,symbol,name,area,industry,market,list_date"""
            self.Sql_execution(f"create table {name}({input_header})")
    

    用Tushare接口爬取完整代码

    # -*- coding: utf-8 -*-
     """此处为用于爬取和存储到数据库的Tushare.py"""
    import tushare as t1
    import time # 用以计时
    from config import * # 此库为配置库
    from SQLserver import * # 此库为作者所写
    
    class Fetch_Data():
        """code股票代码 sd开始日期 ed结束日期"""
    
        def __init__(self, code, start_data, end_data):
            self.code = code
            self.sd = start_data
            self.ed = end_data
            # self.csv_name = "csv_data/" + csv_name + ".csv"
    
        def web_spider(self):  # 爬虫tushare接口
            try:
                df = ts.daily(ts_code=self.code, start_date=self.sd, end_date=self.ed)  # 爬取数据--dataframe格式
                # daily方法所获取的数据ts_code,trade_date,open,high,low,close,pre_close,change,pct_chg,vol,amount,avgprice
                # df.to_csv(self.csv_name) # 转换为csv文件
                return df  # 返回数据
            except Exception as e:
    			print(e) # 打印报错信息
    class Sql_Data_Handle():
        def __init__(self, df, connect, curs):
            self.df = df
            self.connect = connect
            self.curs = curs
    
        def character(self):
            # df = pandas.read_csv(self.csv_name, encoding='gbk') # 用pandas库读取csv文件
            line_num = self.line_num
            # pandas的iloc函数读取每行对应数据
            ts_code = self.df.iloc[line_num]["ts_code"]
            trade_date = self.df.iloc[line_num]["trade_date"]
            open = self.df.iloc[line_num]["open"]
            high = self.df.iloc[line_num]["high"]
            low = self.df.iloc[line_num]["low"]
            close = self.df.iloc[line_num]["close"]
            pre_close = self.df.iloc[line_num]["pre_close"]
            change = self.df.iloc[line_num]["change"]
            pct_chg = self.df.iloc[line_num]["pct_chg"]
            vol = self.df.iloc[line_num]["vol"]
            amount = self.df.iloc[line_num]["amount"]
            # 将数据转换为元祖tuple格式
            values = (
                ts_code, trade_date, float(open), float(high), float(low), float(close), float(pre_close),
                float(change), float(pct_chg), float(vol), float(amount))
            return values
        def add_data(self):
    
            self.line_num = len(self.df) - 1
            # 循环调用character()函数-读取每行数据
            while self.line_num >= 0:
                value_list = self.character()
                try:
                    # 插入数据库
                    Sql.Sql_execution(
                        f"""insert into stock ({tushare["Column"]}) values """ + f"(\'{value_list[0]}\',\'{value_list[1]}\',\'{value_list[2]}\',\'{value_list[3]}\',\'{value_list[4]}\',\'{value_list[5]}\',\'{value_list[6]}\',\'{value_list[7]}\',\'{value_list[8]}\',\'{value_list[9]}\',\'{value_list[10]}\')")
                except Exception:
                    # 出错信息
                    print(f"{value_list[0]}-{value_list[1]}未被添加!")
                self.line_num -= 1
                i += 1
            print(f"The data has been added to the stock database")
            return i
    
    if __name__ == '__main__':
        count = 0
        line_count = len(Stock_list)
        print("连接数据库")
        Sql = DataServer_Sqlite3("stock")  # 连接数据库
        stock_code = Stock_list
        # Sql.Empty_database()  # 清空数据库
        # print("清空数据库")
        # Sql.Zero_Id()  # 将ID归零
        # print("将ID归零")
    for key in stock_code:
        try:
            column = tushare["column"] # config中的tushare字典
            t1.set_token(tushare["token"])  # token值
            ts = t1.pro_api()  # 初始化pro接口
            print("初始化pro接口成功")
            input_code = stock_code[key]
            sd, ed = "20181231", "20201231"  # 起始日期,结束日期
            print(f"抓取{key}股票数据")
            start = time.perf_counter()  # 开始时间
            df = Fetch_Data(input_code, sd, ed).web_spider()  # dataframe格式股票数据
            line_num = Sql_Data_Handle(df, Sql.connection, Sql.curs).add_data()
            end = time.perf_counter()  # 结束时间
            # 记录用时
            print(f"添加{key}股票数据到数据库--成功,用时{start - end}")
            # 记录添加的数据条数
            print(f"{key} 共{line_num}条数据已添加到数据库!")
        except Exception as e:
            print e
        count += 1
        print(f"还剩{line_count - count}支股票...")
    

    有需要股票代码和名称的私信我。

    有问题可以在评论区留言。如果喜欢这篇文章记得点赞哦!!!

    展开全文
  • python爬取股票数据的一点小结

    千次阅读 2018-09-25 15:20:55
    不过大部分教程都是只能够爬取一段时间的股票数据,针对某一只股票历史数据爬取,目前还没有看到比较好的教程。下面对近期学的东西进行一点点小结。 二、股票数据爬取网站 网上更多推荐的是东方财富的股票数据,...
  • 使用Python的requests 和BeautifulSoup模块,Python 2.7.12可在命令行中...pip install requestspip install bs4以武汉市2017年5~7月的历史为例爬取天气网中武汉市的历史天气数据。7月对应的网址为http://lishi.tia...
  • 1. 如何选取过去每个月股票的市值 python类似,可以修改一下股票涨跌幅数据是量化投资学习的基本数据资料之一,下面以python代码编程为工具,获得所需要的历史数据。主要步骤有:(1) #按照市值从小到大的顺序活得N...
  • python爬取历史天气数据

    千次阅读 2019-01-16 22:29:49
    爬取历史天气数据 def get_one_page(url): ''' 获取网页 ''' print('正在加载'+url) headers={'User-Agent':'User-Agent:Mozilla/5.0'} try: response = requests.get(url,headers=headers) if...
  • 用用python爬爬取取历历史史天天气气数数据据的的方方法法示示例例 这篇文章主要介绍了用python爬取历史天气数据的方法示例文中通过示例代码介绍的非常详细对大家的学习 或者 作具有一定的参考学习价值需要的朋友们...
  • 2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27...
  • 1 """2 新浪财经,爬取历史股票数据3 """45 #-*- coding:utf-8 -*-67 importnumpy as np8 importurllib.request, lxml.html9 from urllib.request importurlopen10 from bs4 importBeautifulSoup11 importre, time12...
  • python爬取A股历史数据

    2018-02-06 23:19:08
    python爬虫技术,从雪球网上爬取A股所有上市公司的历史数据,存储的本地文件中,非常简单,对初学者很有帮助
  • # 构造2019全年的月份列表 months = [] for year in (2019,): for month in range(12): months.append("%d%02d"%(year, month+1)) todo_urls = [ ... for month in months ]
  • python爬取历史天气数据

    千次阅读 多人点赞 2019-12-28 09:10:26
    某天气网站(www.数字.com)存有2011年至今的天气数据,有天看到一本爬虫教材提到了爬取这些数据的方法,学习之,并加以改进。 准备爬的历史天气 爬之前先分析url。左上有年份、月份的下拉选择框,按F12,进去看...
  • import requests from bs4 import BeautifulSoup as bs import json import csv ...#宏变量存储日期列表,事先爬取 dateList = [ '2018-05-25', '2018-06-01', '2018-06-08', '2018-06-15', '...

空空如也

空空如也

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

python爬取股票历史数据

python 订阅