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

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

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

瀏覽:3日期: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 編程
相關文章:
主站蜘蛛池模板: 废水处理-废气处理-工业废水处理-工业废气处理工程-深圳丰绿环保废气处理公司 | 深圳成考网-深圳成人高考报名网| 高压无油空压机_无油水润滑空压机_水润滑无油螺杆空压机_无油空压机厂家-科普柯超滤(广东)节能科技有限公司 | 超细|超微气流粉碎机|气流磨|气流分级机|粉体改性机|磨粉机|粉碎设备-山东埃尔派粉体科技 | 流变仪-热分析联用仪-热膨胀仪厂家-耐驰科学仪器商贸 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | 灌木树苗-绿化苗木-常绿乔木-价格/批发/基地 - 四川成都途美园林 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 注塑机-压铸机-塑料注塑机-卧式注塑机-高速注塑机-单缸注塑机厂家-广东联升精密智能装备科技有限公司 | 西宁装修_西宁装修公司-西宁业之峰装饰-青海业之峰墅级装饰设计公司【官网】 | 旋片真空泵_真空泵_水环真空泵_真空机组-深圳恒才机电设备有限公司 | 济南宣传册设计-画册设计_济南莫都品牌设计公司| 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 纸塑分离机-纸塑分离清洗机设备-压力筛-碎浆机厂家金双联环保 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 涡轮流量计_LWGY智能气体液体电池供电计量表-金湖凯铭仪表有限公司 | 西门子气候补偿器,锅炉气候补偿器-陕西沃信机电工程有限公司 | 福州时代广告制作装饰有限公司-福州广告公司广告牌制作,福州展厅文化墙广告设计, | 艾乐贝拉细胞研究中心 | 国家组织工程种子细胞库华南分库 | 斗式提升机,斗式提升机厂家-淄博宏建机械有限公司 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 国产频谱分析仪-国产网络分析仪-上海坚融实业有限公司 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 杭州翻译公司_驾照翻译_专业人工翻译-杭州以琳翻译有限公司官网 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 | PE拉伸缠绕膜,拉伸缠绕膜厂家,纳米缠绕膜-山东凯祥包装 | ph计,实验室ph计,台式ph计,实验室酸度计,台式酸度计 | 杭州中央空调维修_冷却塔/新风机柜/热水器/锅炉除垢清洗_除垢剂_风机盘管_冷凝器清洗-杭州亿诺能源有限公司 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 蒜肠网-动漫,二次元,COSPLAY,漫展以及收藏型模型,手办,玩具的新媒体.(原变形金刚变迷TF圈) | 混合反应量热仪-高温高压量热仪-微机差热分析仪DTA|凯璞百科 | 液压油缸-液压站生产厂家-洛阳泰诺液压科技有限公司 | 一体化净水器_一体化净水设备_一体化水处理设备-江苏旭浩鑫环保科技有限公司 | 无纺布包装机|径向缠绕包装机|缠绕膜打包机-上海晏陵智能设备有限公司 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 | 无刷电机_直流无刷电机_行星减速机-佛山市藤尺机电设备有限公司 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | 透平油真空滤油机-变压器油板框滤油机-滤油车-华之源过滤设备 | 塑钢件_塑钢门窗配件_塑钢配件厂家-文安县启泰金属制品有限公司 深圳南财多媒体有限公司介绍 | 通风天窗,通风气楼,屋顶通风天窗,屋顶通风天窗公司 | 节流截止放空阀-不锈钢阀门-气动|电动截止阀-鸿华阀门有限公司 |