上海黄金交易所(手把手地教你用Python自动爬取上海黄金交易所的早午盘金价与银价)
学会使用Python工具来爬取某些网站上的信息,对于平时工作会有很大的帮助,它不仅能极大地提高工作效率,而且还能实现自动化办公。那么,在这里将向大家介绍一下怎样采用Python爬取上海黄金交易所网站上早盘、午盘的金价与银价,并实现每日定时自动化获取。
一、背景描述
对于贵金属行业,有时候销售人员想知道每日黄金或银的价格,平时一般是通过打开上海黄金交易所网站 (https://www.sge.com.cn/) 进行查看。但是,这样是需要人为地每天去打开网站查看了才知,那么,有没有办法可以自动地获取到上面的金价或银价,然后在公司网站上自动显示金价或银价的结果呢?
答案肯定是可以的,下面开始一步一步教大家如何来实现这个功能。
二、Python高版本打包生成的执行文件在服务器上运行出错
首先,先解决Pytho版本问题,代码留到后面才讲,本人之前采用的是python3.9 64位,这是一个较高的版本,通过pyinstaller -F -w goldprice.py 进行打包生成的goldprice.exe执行文件,在本机下面运行无误。但是将这个文件拷至公司内网服务器上运行就出错!error显示为:
Fatal error in launcher:Unable to create process using ;
即无法启动此程序,查询此错误的原因为计算机中丢失api-ms-win-core-path-11-1-0.dll这个文件, 如图1所示。
根据错误提示,分别通过下面两个方法进行了处理,但未成功,两种方法分别说明如下:
1、首先尝试一下最简单的方案,在网上搜索下载api-ms-win-crt-runtime-l1-1-0.dll文件。
下载完成后将api-ms-win-crt-runtime-l1-1-0.dll文件复制到服务器上,位置于C:\Windows\SysWOW64(64位目录)或C:\Windows\System32(32位目录)。但是,拷过去时结果发现本身系统就有这个dll文件,故可以判断并非缺少这个dll文件的原因造成。
2、根据一个类似问题的网站上介绍,需要下载VC的应用程序(包含api-ms-win-core-path-11-1-0.dll的),即 vc_redist.x64.exe 这个应用安装文件来进行安装 , 但是,安装后问题依旧。
因此,通过以上简单的处理后,发现问题无法解决,该怎么办?
三、问题分析
根据前面生成的执行文件,仅在本机上能正常运行,但放至服务器上运行出错,显然不行。毕竟,这个程序是要部署在服务器上来使用的,那么,通过本机的运行环境与服务器运行环境进行对比,得到如下信息:
1、服务器采用的系统是windows2008 R2 64位系统,已经算是非常老的系统。
2、python生成的执行程序在我本机运行环境是基于win10 professional版本。
3、Python版本是3.9版本且为64位。
因此,怀疑是因为打包生成exe文件的python版本过高,而导致生成的exe文件无法独立在原先较老的系统上运行。那么,考虑采取较低版本的python来对其重新打包生成。
四、问题解决
1、下载安装旧版本Python
下载Python3.8.5的32位版本。如图4.1所示:
下载完成后,开始进行安装,我是将其安装在本机的D:\python385目录下面
2、配置Python环境
将Python3.8.5版本安装成功后,打开pycharm。打开获取金价程序 GoldPrice.py, 在pycharm的菜单上,点击file--->Settings-->Project:python-->Python Interpreter. 在Project Interpreter: 下拉框右边,点击“修改”按钮,如下图4.2所示.
在弹出的下拉菜单中,点击“Add..." ,如下图4.3所示
在弹出的画面,如图4.4所示. 选择 Exsting environment
选择好Python3.8.5后,下面图4.5中红色框住的部分一开始是没有安装的。因此,为了金价爬取程序正常运行,需要先对相关库或组件进行安装,点击图4.5中右边的”+“号进行搜索库并安装。
在弹出的窗体,如图4.6所示,输入要安装的组件或库名称,比如:requests, 直接输入 requests, 此时,下面会显示找到的库文件清单,光标定位到所需要安装的库文件上,然后点击左下面的"Install Package" 按钮,即可开始安装组件。
采用相同的方法,依次将需要安装的库进行安装,之后,在图4.7中先点击Apply,再点击OK按钮。
接下来,创建一个打包的批处理文件. 如下图4.8所示.
打包批处理文件名为: scexe2.bat,在其中输入调用的python版本(python3.8.5)的pyinstaller文件来对金价获取程序goldprice.py进行打包。
批处理文件scexe2.bat写好后保存在D:\目录下,直接双击scexe2.bat, 即可开始进行打包,过一会儿就生成了exe文件,默认在c:\dist 目录下面,如图4.9所示.
将生成好的exe文件拷至远程主机中。比如:远程机中d:\eis目录下,如图4.10所示
五、测试生成的打包程序是否正常
在远程服务器上,运行cmd,进入d:\eis,运行goldprice.exe, 如图5.1所示。可见程序运行后无误
这一步无误后,我们就可以在服务器上,点击开始-->任务计划程序,之后创建基本任务,输入任务名称:例如:GetGoldPrice (任意取名,但最好方便记忆), 在希望任务何时开始时,选择“每天”,之后点击“下一步”,设置每天的开始时间,此处将金价获取时间设置早上8:40,在接下来是启动程序,点击下一步即可完成。
注意:在设置过程中的细节。希望任务触发时的条件,请选择“不管用户是否登录都要运行”
下面是设置好后的任务计划,如图5.2所示。
至此,python打包生成的exe文件在远程服务器上成功部署并设置每日8:40及13:30两个时间段定时自动获取。
六、Python爬虫代码
终于到了Python爬取上海黄金交易所网站上数据的核心代码,废话少说,直接贴代码,本人经过调试运行无误。
##爬上海黄金网站上的金价信息
import requests
from bs4 import BeautifulSoup
from bs4 import BeautifulSoup as bf
import pymssql
import re
from lxml import etree
from urllib.request import urlopen
url = 'https://www.sge.com.cn/' ## 上海黄金网
##反爬伪装
##User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4315.4 Mobile Safari/537.36
myheader = {
'User-Agent': 'Chrome/88.0.4315.4'
}
result = requests.get(url, headers=myheader)
html = result.text
soup = BeautifulSoup(html, 'lxml')
# #页面解析
# BeautifulSoup
# print(soup.find_all('div',class_='touziList fs16')) ## soup.find('a',attrs={'class':'fleft'})
gold_list = soup.find_all('div', class_='touziList fs16')
#print('soup=',gold_list[0])
# 金
#_zaopangoldprice=soup.find('span',attrs={'class':'colorRed fs20'}).text ## 上海金早盘价(元/克) ---值
_zaopangoldprice=soup.select("#dataStatistics0 .colorRed")[0].text
# print('_zaopangoldprice=',_zaopangoldprice)
_wupangoldprice=soup.select("#dataStatistics0 .colorRed")[1].text ## 上海金午盘价(元/克) ---值
# print('_wupangoldprice=',_wupangoldprice)
# 银
_zaopanSilverprice=soup.select("#dataStatistics1 .colorRed")[0].text ## 上海银早盘价(元/克) ---值
# print('_zaopanSilverprice=',_zaopanSilverprice)
_wupanSilverprice=soup.select("#dataStatistics1 .colorRed")[1].text ## 上海银午盘价(元/克) ---值
# print('_wupanSilverprice=',_wupanSilverprice)
goldpricedesc = ""
for nu in gold_list:
goldpricedesc = goldpricedesc + str(nu)
# 将爬取的数据写入到SQL表中
db = pymssql.connect(host=".", user="dsds", password="***s", database="gold", charset='utf8')
cursor = db.cursor()
sql = "insert into GoldPriceList(GoldPriceDesc,zaopangoldprice,wupangoldprice,zaopansilverprice,wupansilverprice,Remark) values('"+goldpricedesc+"','"+_zaopangoldprice+"','"+_wupangoldprice+"','"+_zaopanSilverprice+"','"+_wupanSilverprice+"',N'来源于上海黄金交易所')"
# sql = "insert into GoldPriceList(GoldPriceDesc,Remark) values('" + goldpricedesc + "',N'来源于上海黄金交易所')"
cursor.execute(sql)
db.commit()
db.close()
# print('OK!从上海金价网获取当日金价数据完成!')
将以上代码保存为goldprice.py,打开pycharm,调用python3.8.5编译器来进行调试运行。
运行成功后,再通过cmd转入命令行状态下,执行命令:
pyinstaller -F -w goldprice.py (回车)
则自动进行打包,最终生成goldprice.exe可执行文件。
七:自动爬取数据到SQL数据库的结果
通过以上自动化定时设置,每天两个时段就会自动地从上海黄金交易所网站上爬取早午盘数据,无须人为干预,将爬取到的数据自动地插入到服务器数据库中。如图7.1所示.
至此,一个完整的Python自动爬取上海黄金交易所网站上的早午盘金银价格数据,就这样圆满介绍完毕。
如果有不明白的地方或需要源码的朋友,可以关注我并在评论区下方进行留言,我将一一回复,谢谢!
相关内容
相关资讯
-
ok数字货币(火币、币安、OKEx,三大交易所这一年都干了啥?)
李林突然在朋友圈公布消息,“火币日本,日本金融厅 007 号交易所牌照,系统经过审核,为日本用户提供完全合规的数字货币交易服务
-
中国股市具有投资价值(中国股市投资价值未来)
接下来以作为中国核心资产的代表贵州茅台为例,讲解实际案例中股票收益与业绩成长之间的联系:贵州茅台收益最好的一段里也有博弈的部分:2012年塑化剂事件 2013年三公消费的双重打压下,茅台的价格只有一百
-
虚拟币平台地球,虚拟币数据平台
绗竴鏋氱邯蹇靛竵鑳岄潰涓绘櫙鐢辨娊璞¤〃鐜扮殑鐪肩潧銆佸彾瀛愬拰鍦扮悆鍥炬缁勬垚锛屽唴缂樺彸渚у垔鈥滅幆澧冧繚鎶も€濆瓧鏍凤紝琛ㄨ揪浜嗕汉绫诲璧栦互鐢熷瓨鐨勮嚜鐒剁幆澧冪殑鍏虫敞銆傜浜屾灇绾
-
韩国第二大虚拟币交易平台?韩国有游戏币交易平台么在平台上卖游戏币犯法么
求韩国游戏币交易网站闊╁浗浜ゆ槗骞冲彴www.itemmania.comwww.itembay.com鍦ㄥ浗鍐呬笂闇€瑕佹寕浠g悊鎵嶈兘鎵撳紑娆х編浜ゆ槗骞冲彴http://www.svcn.com.
-
50etf在期货公司开户(50etf期权开户流程)
除了这种开户方式,不满足条件的投资人可以选择期权分仓开户,此方式需要具备一定的投资经验,最好提前做过期权模拟交易或者期货交易,期权是一种高风险投资品种,投资者需要根据自身条件理性选择
-
东方财富港美股市能做股指期货吗(东方财富港美股市能做股指期货吗安全吗)
br>涔板崠缇庡浗鑲$エ鐨勬墜缁垂锛屼笉浠モ€滀氦鏄撻噾棰濃€濈殑姣旂巼璁$畻锛岃€屼互鈥滀氦鏄撶瑪鏁扳€濅负鍩哄噯锛岃€屼笖鍥犲埜鍟嗙殑涓嶅悓鑰屾湁寮傘€備緥濡傦細鍦ㄧ煡鍚嶇綉缁滃埜鍟唀*trad
-
股指期货和期权哪个好做点 股指期货和期权哪个好做点呢
期权的投资技巧牵扯到比较复杂的套利模型,如果你按照一般的股票或期货纯看k线操作,有时候可以,有时候就不太合适,因为期权价格有时候会非理性的大,让人承受不住
实时快讯
-
2023-09-08汽车融资租赁公司模式(汽车融资租赁有限公司是干嘛的)
-
2023-09-08熏鹅肉怎么做好吃(熏鹅肉怎么做好吃家常做法)
-
2023-09-08融资租赁的产生(融资租赁产生的应收款项)
-
2023-09-08富春江环保热电股份有限公司(富春江环保热电搬迁)
-
2023-09-08郑商所 苹果 保险 期货(河南苹果期货保险)
-
2023-09-08珠海海洋乐园(珠海海洋乐园风景照片高清图)
-
2023-09-08李嘉诚投资方向(李嘉诚投资方向有哪些股票)
-
2023-09-08华为上海研究所(华为上海研究所招聘)