溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python利用re,bs4,requests模塊獲取股票數(shù)據(jù)

發(fā)布時間:2020-10-14 20:26:59 來源:腳本之家 閱讀:164 作者:baagee 欄目:開發(fā)技術(shù)

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

首先頁面分析,打開東方財經(jīng)網(wǎng)股票列表頁,

python利用re,bs4,requests模塊獲取股票數(shù)據(jù)

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

python利用re,bs4,requests模塊獲取股票數(shù)據(jù)

網(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í)有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI