Python爬蟲抓取股票資訊
介於我們小組的專案需求是需要在網上抓取股票資訊,然後做成視覺化介面。最開始的想法是利用Java抓取,但是由於Java程式碼有點冗餘,決定使用Python。專案開始,遇到了極大的問題,由於小組成員對於Python的瞭解認知都有限,我們決定先開始自學,然後寫一個簡單的爬蟲。
但是在最開始的時候就產生了問題,我們最初設想是抓取東方財富網上的股票資訊。在我爬到了網頁的資訊以後,我發現,所有的股票資訊都是在頁面載入以後才能載入出來,這使初學Python的我產生了極大的困惑,但是介於時間有限,我也沒有進行系統的學習。於是,我只能另找方法,在網上尋求幫助。最終,我發現,我可以通過先爬取東方財富網的股票程式碼資訊然後將股票程式碼放在百度股市通裡面查詢,百度股市通的股票資訊是頁面載入的時候就直接載入到頁面上的。找到了解決問題的方法,我開始完成了我的程式碼。
複製程式碼
1 # Author:Kevin Sun
2 # 股市行情
3
4 import requests
5 from bs4 import BeautifulSoup
6 import traceback
7 import re
8 import time
9
10
11 def getHTMLText(url): #獲得所需的網頁原始碼
12 try:
13 user_agent = ‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36’
14 headers = {‘User-Agent’: user_agent}
15 r = requests.get(url, headers=headers, timeout=30)
16 r.raise_for_status()
17 r.encoding = r.apparent_encoding
18 return r.text
19 except:
20 return “”
21
22 def getFileName():
23 dirname = time.strftime(’%Y%m%d’,time.localtime(time.time()))
24 dirname+=‘sh’
25 return dirname
26
27
28
29 def getStockList(lst, stock_list_url): # 獲得東方財富網上面上海股票的全部程式碼
30 html = getHTMLText(stock_list_url)
31 soup = BeautifulSoup(html, ‘html.parser’)
32 a = soup.find_all(‘a’) # 用find_all方法遍歷所有’a’標籤,然後在’a’標籤裡面提取出href部分資訊
33 for i in a:
34 try:
35 href = i.attrs[‘href’]
36 lst.append(re.findall(r"sh6\d{5}", href)[0]) # 用正規表示式匹配所需的資訊,“sh\d{6}”
37 #print(lst)
38 except:
39 continue
40
41
42 def getStockInfo(lst, stock_info_url, fpath):
43 ndate = time.strftime(’%Y%m%d’,time.localtime(time.time()))
44 for stock in lst:
45 url = stock_info_url + stock + ‘.html’ # 拼接url
46 html = getHTMLText(url)
47 try:
48 if html == “”:
49 continue
50 infoDict = {}
51 soup = BeautifulSoup(html, ‘html.parser’)
52 stockInfo = soup.find(‘div’, attrs={‘class’: ‘stock-bets’})
53 if stockInfo == None: # 判斷為空,返回
54 continue
55 # print(stockInfo)
56 # name = stockInfo.find_all(attrs={‘class’: ‘bets-name’})[0]
57 # print(name)
58 #infoDict.update({‘股票編碼’:stock})
59 #inp=name.text.split()[0]+":"
60 keyList = stockInfo.find_all(‘dt’)
61 valueList = stockInfo.find_all(‘dd’)
62 inp=stock+ndate+","+stock+","+ndate+","
63 for i in range(len(keyList)):
64 key = keyList[i].text
65 val = valueList[i].text
66 infoDict[key] = val
67 #print(inp)
68 inp+=infoDict[‘最高’]+","+infoDict[‘換手率’]+","+infoDict[‘成交量’]+","+infoDict[‘成交額’]+"\n"
69 print(inp)
70 with open(fpath, ‘a’, encoding=‘utf-8’) as f:
71
72 #f.write(str(infoDict) + ‘\n’)
73 f.write(inp)
74 except:
75 traceback.print_exc()
76 continue
77
78
79
80 def main(): # 主方法呼叫上面的函式
81 stock_list_url = ‘http://quote.eastmoney.com/stocklist.html’
82 stock_info_url = ‘http://gupiao.baidu.com/stock/’
83 output_file = ‘./’+getFileName()+’.txt’
84 slist = []
85 getStockList(slist, stock_list_url)
86 getStockInfo(slist, stock_info_url, output_file)
87
88
89 main()
複製程式碼
程式碼中用到了Python中的非常方便的beautifulsoup庫(這個庫我在這裡就不多做解釋,我是參考了一個大牛的理解,連結:http://xcjcy.org/),爬蟲使用的是谷歌瀏覽器。程式碼中我也給了一些註釋,由於是Python初學者,有些地方難免有錯誤,之後在專案結束後會繼續學習Python完善。
相關文章
- 小白學 Python 爬蟲(25):爬取股票資訊Python爬蟲
- python爬蟲抓取哈爾濱天氣資訊(靜態爬蟲)Python爬蟲
- Python爬蟲二:抓取京東商品列表頁面資訊Python爬蟲
- Python爬蟲抓取知乎所有使用者資訊Python爬蟲
- 爬蟲app資訊抓取之apk反編譯抓取爬蟲APPAPK編譯
- python爬蟲--招聘資訊Python爬蟲
- 用Python爬蟲抓取代理IPPython爬蟲
- 爬蟲原理與資料抓取爬蟲
- Python爬蟲新手教程:手機APP資料抓取 pyspiderPython爬蟲APPIDE
- Python爬蟲抓取技術的門道Python爬蟲
- 爬蟲抓取網頁資料原理爬蟲網頁
- 爬蟲之股票定向爬取爬蟲
- python爬蟲——爬取大學排名資訊Python爬蟲
- python爬蟲--爬取鏈家租房資訊Python爬蟲
- Python爬蟲抓取資料,為什麼要使用代理IP?Python爬蟲
- Python爬蟲如何去抓取qq音樂的歌手資料?Python爬蟲
- Scrapy爬蟲:實習僧網最新招聘資訊抓取爬蟲
- python爬蟲之抓取小說(逆天邪神)Python爬蟲
- Python爬蟲,抓取淘寶商品評論內容!Python爬蟲
- Python爬蟲爬取淘寶,京東商品資訊Python爬蟲
- Python爬蟲新手教程:微醫掛號網醫生資料抓取Python爬蟲
- 爬蟲技術抓取網站資料方法爬蟲網站
- python網路爬蟲_Python爬蟲:30個小時搞定Python網路爬蟲視訊教程Python爬蟲
- Python爬取股票資訊,並實現視覺化資料Python視覺化
- Python爬蟲入門教程 50-100 Python3爬蟲爬取VIP視訊-Python爬蟲6操作Python爬蟲
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- 實時獲取股票資料,免費!——Python爬蟲Sina Stock實戰Python爬蟲
- Python爬蟲實戰:爬取淘寶的商品資訊Python爬蟲
- Python 爬取 baidu 股票市值資料PythonAI
- Python爬蟲入門教程 29-100 手機APP資料抓取 pyspiderPython爬蟲APPIDE
- Python爬蟲實戰:爐石傳說卡牌、原畫資料抓取Python爬蟲
- Python爬蟲入門教程 33-100 《海王》評論資料抓取 scrapyPython爬蟲
- python爬蟲抓取資料時失敗_python爬蟲 大佬 請教下 為什麼爬取的資料有時能爬到 有時有爬不到, 程式碼如下:...Python爬蟲
- [Python] 網路爬蟲與資訊提取(1) 網路爬蟲之規則Python爬蟲
- python爬蟲58同城(多個資訊一次爬取)Python爬蟲
- Python爬蟲訓練:爬取酷燃網視訊資料Python爬蟲
- 網路爬蟲之抓取郵箱爬蟲
- 讓爬蟲無障礙抓取上千萬APP資料爬蟲APP