美文网首页我爱编程
用python写爬虫-5.1json用pandas入mysql库

用python写爬虫-5.1json用pandas入mysql库

作者: ddm2014 | 来源:发表于2018-04-18 15:01 被阅读0次

    pandas是一个数据处理模块,前面也已经提到了好些,用python写爬虫--4.5pandas存入excel.
    这次来统一说一说,使用感想。
    pandas主要是Seriers和Dataframe,Seriers相当于list,dataframe相当于excel表格,有行也有列。
    这回主要还是说爬取下来的信息入库的问题,假如是爬取页面上的信息,像‘什么值得买’的价格信息啥的,这种就得一个个插入数据库。但是像12306返回的是json,那就用pandas整理一下入库,要方便的多。
    还是举个例子。这回爬取的格力电器的历史行情。
    网址:http://q.stock.sohu.com/cn/000651/lshq.shtml
    要观察信息的发送情况,在时间上做更改就能看到网站的发送情况。

    image.png

    还是F12.


    image.png

    接下来就方便多了。

    import requests
    def getdata(code,start='20171009',end='20171130'):
        url ='http://q.stock.sohu.com/hisHq?code=cn_{}&start={}&end={}&stat=1&order=D&period=d&callback=historySearchHandler&rt=jsonp&r=0.625097909197931&0.266277122911587'
        url1 = url.format(code,start,end)
        return requests.get(url1).text
    print(getdata('000567'))
    

    可见返回的是


    image.png

    这不太像是一个标准的json格式,这只能用正则把有用的信息抓下来,然后转成df。

    import requests
    import pandas as pd
    import re
    from sqlalchemy import create_engine
    def getdata(code,start='20171009',end='20171130'):
        url ='http://q.stock.sohu.com/hisHq?code=cn_{}&start={}&end={}&stat=1&order=D&period=d&callback=historySearchHandler&rt=jsonp&r=0.625097909197931&0.266277122911587'
        url1 = url.format(code,start,end)
        res = requests.get(url1).text
        resp =re.search('{"status":0,"hq":(.*),"code"',res).group(1)
        data =eval(resp)
        df = pd.DataFrame(data=data)
        df.columns=['date','open','close','change','changerate','high','low','vol','volnum','hsl']
        df['code'] = code
        con = create_engine('mysql://root:123456@localhost:3306/tushare?charset=utf8')
        pd.io.sql.to_sql(df,'tick_data',con,schema='tushare',if_exists='append')
    
    

    data =eval(resp)这是将str转为list,爬取下来的信息都是str,提取[]里信息,data是规整的信息,转化为dataframe比较合适。
    create_engine():'数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名'
    存入库中就好了 pd.io.sql.to_sql(df,'tick_data',con,schema='tushare',if_exists='append')
    df:要存入数据库的dataframe名字
    'tick_data':tablename
    con:前面的连接数据库信息
    schema='tushare':数据库名字
    if_exists='append':存在就添加,不存在就创建

    相关文章

      网友评论

        本文标题:用python写爬虫-5.1json用pandas入mysql库

        本文链接:https://www.haomeiwen.com/subject/mimvkftx.html