首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

简单爬虫代码抓取票交所每日价格

在数据分析的流程中,首先要做的便是获取数据,网络爬虫可以通过程序,自动抓取网络上的目标对象,为数据归集工作提供极大便利。为了实现爬虫程序,我们除了需要了解Python的相关库,也需要了解基本的HTML+CSS+JavaScript网络编程。

那都可以点击下载了,又何必大费周章?设想如果我们需要1年以上的数据,可能会点的手都肿了

我们选择2018-12-14,点击查询,这时刚刚的连接变成了下面的地址:

根据网址的命名规则,可以发现每日的数据的地址就是依据上述网址,将最后面的日期变成目标日期。

现在我们需要分析下载模块的代码。点击Elements模块。我们定位到下面语句:

定位过程十分简单,因为每一个语句都可以在左边的对应界面提示。在这条语句上我们发现了秘密每日的价格就通过以下网址下载:

现在可以建立一个简单的思路:通过读取目标日期的网站源代码,然后抓取上一张图的Excel文件地址,实现数据的下载。

本次爬虫程序,主要调用了以下库:

importrequests

importre

fromurllib.requestimporturlretrieve

fromdatetimeimportdate, timedelta

定义需要下载的起始日期和截止日期

#确定起始日期

startday = date(2018,12,5)

#初始化目标日期

daynow = startday

#确定截止日期

endday = date(2018,12,24)

构架正则表达式

#构架正则表达式

m =r'/uploadfiles/(\d)/(\d)/\d.xls'

建立一个while循环,读取起始日至截止日期间的每日数据。

#循环读取起始日至截止日期间,每日的数据

whiledaynow

#读取网站,网站地址以当前日期结尾

r = requests.get("http://www.shcpe.com.cn/

index_132_lcid_1_date_%s.html"

% daynow.strftime('%Y-%m-%d'))

#当前日期加1天

daynow += timedelta(days=1)

try:

#用正则表达式匹配网址中显示的Excel网站地址

g = re.search(m, r.text)

s ="http://www.shcpe.com.cn"

#url为完整的Excel地址

url = s + g.group()

#为下载的Excel文件命名,以当期日期为名称

filename = daynow.strftime('%Y-%m-%d')

#下载Excel文件

urlretrieve(url,'G:\\BillRate\\%s.xls'% filename)

exceptAttributeErrorase:

#节假日为非交易日,票交所不公布价格

#如果当日为节假日,输出当日无数据

print("%s has no date"% daynow.strftime('%Y-%m-%d'))

对于节假日,输出如下信息:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181224G1GT4000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券