Python小爬虫,爬取当前全部股票信息
生活随笔
收集整理的這篇文章主要介紹了
Python小爬虫,爬取当前全部股票信息
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基本算是一個中小型爬蟲,2000多股票信息全爬取,不知道發爬蟲是否合乎規矩,因此稍微隱藏了兩行超簡單的代碼,略懂python的人應該很輕松能補上。
import requests import re import time import traceback from random import uniform from bs4 import BeautifulSoup# 單個頁面獲取頁面內容 def get_html_text(url, code='utf-8'):try:r = requests.get(url, timeout=30)r.raise_for_status()r.encoding = codereturn r.textexcept BaseException as b:print(b)# 根據頁面中的a標簽,獲取股票編碼信息 def get_stock_list(lst, stock_url):html = get_html_text(stock_url, code='GB2312')soup = BeautifulSoup(html, 'html.parser')al = soup.find_all('a')for a in al:try:href = a.attrs['href']stock = re.findall(r'[s][hz]\d{6}', href)[0]lst.append(stock)except:continue# 根據股票列表爬取信息 def get_stock_info(stock_list, stockurl, fpath):# 股票計數count = 0# 爬取單個股票for stock in stock_list:# 利用sleep函數規避爬取限制time.sleep(uniform(1.0, 4.0))# 構造股票頁面信息url = stockurl + stock + ".html"html = get_html_text(url)try:# 如果頁面為空,忽略if html == '':continue# 創建存儲股票所有信息的列表,且每次爬取后重置info_dict = dict()# 獲取股票所有信息soup = BeautifulSoup(html, 'html.parser')# 獲取首個div標簽下的信息stock_info = soup.find('div', attrs={'class': 'stock-info'})# 獲取股票名稱,find_all方法返回的是列表,因此要將列表中的值取出,尾部加上[0]name = stock_info.find_all(attrs={'class': 'bets-name'})[0]info_dict.update({'股票名稱': name.text.split()[0]})info_dict.update({'股票編碼': stock})# 獲取股票具體信息key_list = stock_info.find_all('dt')value_list = stock_info.find_all('dd')for i in range(len(key_list)):key = key_list[i].textvalue = value_list[i].textinfo_dict[key] = value# 寫入文件with open(fpath, 'a', encoding='utf-8') as file:file.write(str(info_dict) + '\n')count += 1print("\r當前進度: {:.2f}%".format(count * 100 / len(stock_list)), end="")except:count += 1print("\r當前進度: {:.2f}%".format(count * 100 / len(stock_list)), end="")traceback.print_exc()continuedef main():# 記錄開始時間start = ....# 股票列表頁面stock_list_url = 'http://quote.eastmoney.com/stock_list.html'# 股票信息頁面stock_info_url = 'https://gupiao.baidu.com/stock/'# 輸出文件output_file = 'D:/baidu_stock_info_crawl.txt'# 股票列表stock_list = []get_stock_list(stock_list, stock_list_url)# 獲取列表中股票信息,查詢信息并存儲get_stock_info(stock_list, stock_info_url, output_file)# 獲取程序耗時end = ....print("一共耗時{:.2f}min".format((end-start)/60)) main()現在程序還在跑,等跑完看看~~~
耗時3個多小時爬完,下來個2M+ 的txt文件,用excel整理一下,如圖:
回頭有空學習一下python處理excel
總結
以上是生活随笔為你收集整理的Python小爬虫,爬取当前全部股票信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MISRA-C 2004 规则解读(61
- 下一篇: 诺基亚6303c格式设置