电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

基于Python爬取搜狐證券股票過程解析

瀏覽:2日期:2022-07-05 09:18:26

數據的爬取

我們以上證50的股票為例,首先需要找到一個網站包含這五十只股票的股票代碼,例如這里我們使用搜狐證券提供的列表。

https://q.stock.sohu.com/cn/bk_4272.shtml

基于Python爬取搜狐證券股票過程解析

可以看到,在這個網站中有上證50的所有股票代碼,我們希望爬取的就是這個包含股票代碼的表,并獲取這個表的第一列。

爬取網站的數據我們使用Beautiful Soup這個工具包,需要注意的是,一般只能爬取到靜態網頁中的信息。

簡單來說,Beautiful Soup是Python的一個庫,最主要的功能是從網頁抓取數據。

像往常一樣,使用這個庫之前,我們需要先導入該庫bs4。除此之外,我們還需要使用requests這個工具獲取網站信息,因此導入這兩個庫:

import bs4 as bs

import requests

我們定義一個函數saveSS50Tickers() 來實現上證50股票代碼的獲取,獲取的數據來自于搜狐證券的網頁,使用 get() 方法獲取給定靜態網頁的數據。

def saveSS50Tickers():resp = requests.get(’https://q.stock.sohu.com/cn/bk_4272.shtml’)

接下來我們打開搜狐證券的這個網址,在頁面任意位置右鍵選擇查看元素,或者Inspect Element,或者類似的選項來查看當前網站的源代碼信息。

基于Python爬取搜狐證券股票過程解析

我們需要先在這里找出網頁的一些基本信息和我們需要爬取的數據的特征。

基于Python爬取搜狐證券股票過程解析

首先,找到Element,在下面的內容中找到網頁的頭文件 (head)。然后找到網頁的文字的編碼方式。這里這個網頁文字的編碼方式是gb2312。

如果我們想爬取并正確顯示這個網頁上,就需要先對獲取到的網頁內容解碼。

解碼可以使用 encoding 這個方法:

resp.encoding = ’gb2312’

接下來使用 BeautifulSoup 和lxml解析網頁信息:

soup = bs.BeautifulSoup(resp.text, ’lxml’)

這里為了方便后期的處理,首先使用 resp.text 將網頁信息轉成了文本格式,然后再解析網頁的數據。

接下來我們需要在網頁的源碼中找到需要爬取信息的標簽,這里我們需要爬取這個表格中的信息,首先,可以通過網站源碼的搜索功能搜索表格里的相關數據定位到表格的源碼。

基于Python爬取搜狐證券股票過程解析

同樣以這個頁面為例,一般網頁使用HTML語言編譯的,因為要準確定位,我們需要了解一些 HTML 語言的基礎內容。在這個頁面的源碼中,

基于Python爬取搜狐證券股票過程解析

<table表示表格開始,后面是這個表格的一些屬性。</table>表示表格結束。

首先,我們使用 soup.find 在網頁信息中找到這個表格標簽的入口:

table = soup.find(’table’, {’id’: ’BIZ_MS_plstock’})

其中’table’表示這里需要找到一個表格,{’id’:’BIZ_MS_plstock’} 則是通過內容或者屬性實現表格的進一步定位。

找到表格的位置之后,我們需要繼續查找需要的數據,同樣以這個頁面為例:

基于Python爬取搜狐證券股票過程解析

在網頁開發語言中,

<tr表示表格中開始新的一行,<td表示在這一行中又新建了一列,而</td>則表示這一列結束了,對應的</tr>則表示這一行結束了。

通過該網頁的源碼,我們可以發現,

表格的第一行和第二行都是表頭的信息,第三行開始是五十家公司的股票信息。另外每家公司的股票代碼在表格的第一列位置。

因為,在Python中,我們需要從表格的第三行開始抓取,每行抓取表格的第一列的數據,將抓取到的數據轉換成文本格式,我們用一個列表 tickers 來存儲抓取到的數據:

tickers = []for row in table.findAll(’tr’)[2:]:ticker = row.findAll(’td’)[0].texttickers.append(ticker + ’.SS’)

因此為了方便后續進行數據處理,這里我們存儲上證50的每家公司的股票代碼時,都在代碼后面再添加’.SS’的字符。這時我們運行目前的代碼,并將列表tickers輸出:

# 導入 beautiful soup4 包,用于抓取網頁信息import bs4 as bs# 導入 pickle 用于序列化對象import pickle# 導入 request 用于獲取網站上的源碼import requestsdef saveSS50Tickers(): resp = requests.get(’https://q.stock.sohu.com/cn/bk_4272.shtml’) resp.encoding = ’gb2312’ soup = bs.BeautifulSoup(resp.text, ’lxml’) # print(soup) table = soup.find(’table’, {’id’: ’BIZ_MS_plstock’}) # print(table) tickers = [] # print(table.find_all(’tr’)) for row in table.findAll(’tr’)[2:]: # print(row) ticker = row.findAll(’td’)[0].text tickers.append(ticker + ’.SS’) return tickerstickers = saveSS50Tickers()print(tickers)

觀察到輸出信息如下:

[’600036.SS’, ’601229.SS’, ’600031.SS’, ’601166.SS’, ’600104.SS’, ’600030.SS’, ’603259.SS’, ’601668.SS’, ’601628.SS’, ’601766.SS’, ’601857.SS’, ’601398.SS’, ’601390.SS’, ’600029.SS’, ’600028.SS’, ’601818.SS’, ’601211.SS’, ’601066.SS’, ’601111.SS’, ’600837.SS’, ’600887.SS’, ’601888.SS’, ’600690.SS’, ’600519.SS’, ’600016.SS’, ’601989.SS’, ’601988.SS’, ’601601.SS’, ’600019.SS’, ’601186.SS’, ’600703.SS’, ’600196.SS’, ’601318.SS’, ’601800.SS’, ’600050.SS’, ’601319.SS’, ’601288.SS’, ’601688.SS’, ’603993.SS’, ’600309.SS’, ’600048.SS’, ’600276.SS’, ’601138.SS’, ’601336.SS’, ’601088.SS’, ’600585.SS’, ’600000.SS’, ’601328.SS’, ’601939.SS’, ’600340.SS’]

這樣我們就從搜狐證券這個網站上爬取到了上證50的公司股票代碼,并將其以字符串的格式存放在了一個列表變量中。

將股票代碼保存到本地

一般像股票代碼這種內容,短時間內不會有很大的變動,所以我們也不需要每次使用時重新爬取,一種方便的做法是可以將股票代碼信息以文件的格式保存到本地,需要使用時直接從本地讀取就可以了。

這里我們將股票代碼數據保存為pickle格式。pickle 格式的數據可以在 Python 中高效的存取,當然,將文件導出成該格式前需要先導入相應的pickle 庫:

import pickle

pickle可以保存任何數據格式的數據,在經常存取的場景(保存和恢復狀態)下讀取更加高效。

把文件導出成pickle格式的方法是 pickle.dump,同時需要結合文件讀寫操作:

with open(’SS50tickers.pickle’, ’wb’) as f: pickle.dump(tickers, f)

這里的’SS50tickers.pickle’就是保存的文件的名稱,’wb’則表示向文件中寫入數據。pickle.dump(tickers, f) 表示將列表tickers寫入到文件中。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 温州中研白癜风专科_温州治疗白癜风_温州治疗白癜风医院哪家好_温州哪里治疗白癜风 | 吉林污水处理公司,长春工业污水处理设备,净水设备-长春易洁环保科技有限公司 | 合肥活动房_安徽活动板房_集成打包箱房厂家-安徽玉强钢结构集成房屋有限公司 | 物和码官网,物和码,免费一物一码数字化营销SaaS平台 | 好物生环保网、环保论坛 - 环保人的学习交流平台 | 医学动画公司-制作3d医学动画视频-医疗医学演示动画制作-医学三维动画制作公司 | 低温柔性试验仪-土工布淤堵-沥青车辙试验仪-莱博特(天津)试验机有限公司 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 重庆LED显示屏_显示屏安装公司_重庆LED显示屏批发-彩光科技公司 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 即用型透析袋,透析袋夹子,药敏纸片,L型涂布棒-上海桥星贸易有限公司 | 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | 淬火设备-钎焊机-熔炼炉-中频炉-锻造炉-感应加热电源-退火机-热处理设备-优造节能 | 北京包装设计_标志设计公司_包装设计公司-北京思逸品牌设计 | 包头市鑫枫装饰有限公司| 建筑工程资质合作-工程资质加盟分公司-建筑资质加盟 | 电渗析,废酸回收,双极膜-山东天维膜技术有限公司 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 手机游戏_热门软件app下载_好玩的安卓游戏下载基地-吾爱下载站 | 水成膜泡沫灭火剂_氟蛋白泡沫液_河南新乡骏华消防科技厂家 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 塑料检查井_双扣聚氯乙烯增强管_双壁波纹管-河南中盈塑料制品有限公司 | 气动绞车,山东气动绞车,气动绞车厂家-烟台博海石油机械有限公司 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | 德国EA可编程直流电源_电子负载,中国台湾固纬直流电源_交流电源-苏州展文电子科技有限公司 | 蓝鹏测控平台 - 智慧车间系统 - 车间生产数据采集与分析系统 | 铝合金电阻-无源谐波滤波器-上海稳达电讯设备厂 | 传动滚筒,改向滚筒-淄博建凯机械科技有限公司 | 河北凯普威医疗器材有限公司,高档轮椅系列,推车系列,座厕椅系列,协步椅系列,拐扙系列,卫浴系列 | 广域铭岛Geega(际嘉)工业互联网平台-以数字科技引领行业跃迁 | 鲸鱼视觉 -数字展厅多媒体互动展示制作公司 | 医学动画公司-制作3d医学动画视频-医疗医学演示动画制作-医学三维动画制作公司 | 自动气象站_农业气象站_超声波气象站_防爆气象站-山东万象环境科技有限公司 | HYDAC过滤器,HYDAC滤芯,现货ATOS油泵,ATOS比例阀-东莞市广联自动化科技有限公司 | 翰墨AI智能写作助手官网_人工智能问答在线AI写作免费一键生成 | POS机办理_个人POS机免费领取 - 银联POS机申请首页 | 安徽合肥格力空调专卖店_格力中央空调_格力空调总经销公司代理-皖格制冷设备 | 杭州代理记账费用-公司注销需要多久-公司变更监事_杭州福道财务管理咨询有限公司 | 涡轮流量计_LWGY智能气体液体电池供电计量表-金湖凯铭仪表有限公司 | 电加热导热油炉-空气加热器-导热油加热器-翅片电加热管-科安达机械 | 温州食堂承包 - 温州市尚膳餐饮管理有限公司 | 中国产业发展研究网 - 提供行业研究报告 可行性研究报告 投资咨询 市场调研服务 | 泡沫消防车_水罐消防车_湖北江南专用特种汽车有限公司 |