python+mysql库+json_用python写爬虫-5.1json用pandas入mysql库
pandas是一個(gè)數(shù)據(jù)處理模塊,前面也已經(jīng)提到了好些,用python寫爬蟲--4.5pandas存入excel.
這次來統(tǒng)一說一說,使用感想。
pandas主要是Seriers和Dataframe,Seriers相當(dāng)于list,dataframe相當(dāng)于excel表格,有行也有列。
這回主要還是說爬取下來的信息入庫的問題,假如是爬取頁面上的信息,像‘什么值得買’的價(jià)格信息啥的,這種就得一個(gè)個(gè)插入數(shù)據(jù)庫。但是像12306返回的是json,那就用pandas整理一下入庫,要方便的多。
還是舉個(gè)例子。這回爬取的格力電器的歷史行情。
網(wǎng)址:http://q.stock.sohu.com/cn/000651/lshq.shtml
要觀察信息的發(fā)送情況,在時(shí)間上做更改就能看到網(wǎng)站的發(fā)送情況。
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
這不太像是一個(gè)標(biāo)準(zhǔn)的json格式,這只能用正則把有用的信息抓下來,然后轉(zhuǎn)成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轉(zhuǎn)為list,爬取下來的信息都是str,提取[]里信息,data是規(guī)整的信息,轉(zhuǎn)化為dataframe比較合適。
create_engine():'數(shù)據(jù)庫類型+數(shù)據(jù)庫驅(qū)動(dòng)名稱://用戶名:口令@機(jī)器地址:端口號/數(shù)據(jù)庫名'
存入庫中就好了 pd.io.sql.to_sql(df,'tick_data',con,schema='tushare',if_exists='append')
df:要存入數(shù)據(jù)庫的dataframe名字
'tick_data':tablename
con:前面的連接數(shù)據(jù)庫信息
schema='tushare':數(shù)據(jù)庫名字
if_exists='append':存在就添加,不存在就創(chuàng)建
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python+mysql库+json_用python写爬虫-5.1json用pandas入mysql库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从今天起 你的iPhone可以通话录音了
- 下一篇: mysql 获取昨天凌晨_MySQL慢日