python利用re,bs4,requests模塊獲取股票數(shù)據(jù)
今天閑來無聊無意間看到了百度股票,就想著用python爬一下數(shù)據(jù),于是就找到了東方財經(jīng)網(wǎng),結(jié)合這兩個網(wǎng)站,寫了一個小爬蟲,數(shù)據(jù)保存在文件中,比較簡單的示例,就當(dāng)做用來練習(xí)正則表達(dá)式和BeautifulSoupl了。
首先頁面分析,打開東方財經(jīng)網(wǎng)股票列表頁,

和百度股票詳情頁 ,右鍵查看網(wǎng)頁源代碼,

網(wǎng)址后面的代碼就是股票代碼,所以打算先獲取股票代碼,然后獲取詳情,廢話少說,直接上代碼吧:
import re
import requests
from bs4 import BeautifulSoup
#獲取html
def getHtml(url):
try:
req=requests.get(url)
req.raise_for_status()
req.encoding=req.apparent_encoding
return req.text
except :
print('getHtml失敗')
#獲取股票代碼
def getStockList(lst,stockUrl):
html=getHtml(stockUrl)
soup=BeautifulSoup(html,'html.parser')
a=soup.find_all('a')
for i in a:
try:
href=i.attrs['href']
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+'.html'
html=getHtml(url)
try:
if html=='':
continue
infoDict={}
soup=BeautifulSoup(html,'html.parser')
stockInfo=soup.find('div',attrs={'class':'stock-bets'})
name=stockInfo.find_all(attrs={'class':'bets-name'})[0]
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[i].text
infoDict[key]=val
with open(fpath,'a',encoding='utf-8') as f:
f.write(str(infoDict)+'\n')
count+=1
print('\r當(dāng)前速度:{:.2f}%'.format(count*100/len(lst)),end='')
except:
count+=1
print('\r當(dāng)前速度e:{:.2f}%'.format(count*100/len(lst)),end='')
continue
def main():
stockListUrl='http://quote.eastmoney.com/stocklist.html'
stockInfotUrl='https://gupiao.baidu.com/stock/'
outPutFile='D:\python\shuju\stockInfo.txt'
slist=[]
getStockList(slist,stockListUrl)
getStockInfo(slist,stockInfotUrl,outPutFile)
main()
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python實現(xiàn)監(jiān)控windows服務(wù)并自動啟動服務(wù)示例
這篇文章主要介紹了python實現(xiàn)監(jiān)控windows服務(wù)并自動啟動服務(wù)示例,需要的朋友可以參考下2014-04-04
PyTorch模型轉(zhuǎn)TensorRT是怎么實現(xiàn)的?
今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著PyTorch模型轉(zhuǎn)TensorRT是怎么實現(xiàn)的展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
C++和python實現(xiàn)阿姆斯特朗數(shù)字查找實例代碼
這篇文章主要給大家介紹了關(guān)于C++和python實現(xiàn)阿姆斯特朗數(shù)字查找的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
django ModelForm修改顯示縮略圖 imagefield類型的實例
今天小編就為大家分享一篇django ModelForm修改顯示縮略圖 imagefield類型的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Python中Jupyter notebook快捷鍵總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于Python中Jupyter notebook快捷鍵總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-04-04
詳解Python的Django框架中的模版相關(guān)知識
這篇文章主要介紹了Python的Django框架中的模版相關(guān)知識,模版的存在大大簡化了創(chuàng)作頁面時HTML的相關(guān)工作,需要的朋友可以參考下2015-07-07
使用Python代碼進(jìn)行PowerPoint演示文稿的合并與拆分
多個PowerPoint演示文稿的處理可能會成為非常麻煩的工作,有時需要將多個演示文稿合并為一個演示文稿,從而不用在演示時重復(fù)打開演示文稿,本文我們可以使用Python代碼來快速、準(zhǔn)確的執(zhí)行PowerPoint演示文稿的合并于拆分操作,需要的朋友可以參考下2024-03-03

