300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > python爬虫-初次接触

python爬虫-初次接触

时间:2022-03-06 11:27:03

相关推荐

python爬虫-初次接触

说来惭愧,学习程序这么多年,居然都没有为自己怎么编写过程序,之前一直鄙视python一类的脚本语言,想来是多么的无知呀。。 最近觉得必须为自己写写程序了,不能一辈子只为别人服务是吧。 我理解的网络爬虫,程序自动化的抓取人们关心的网页内容,还可以根据超级链接进一步的往下抓数据,这个就是爬虫。 我的第一个网络爬虫就是获取股票数据 / 获取百度股市通里面的股票的历史成交数据 打开网址 /stock/sz300369.html 可以查看到我司股票。 使用google浏览器,F12 选择Network

然后选择日线 点击拉长K线,可以在Network中看到有数据流。选择最大的数据的一个流,可以就看到请求的数据了。

这样就可以获取到产生K线图的,数据来源了,使用的GET然后对应的URL是 /api/stocks/stockdaybar?from=pc&os_ver=1&cuid=xxx&vv=100&format=json&stock_code=sz300369&step=3&start=0308&count=160&fq_type=no&timestamp=1480252213081

到此~~就获取到数据的URL,这个获取方式比较简单就是普通的URL方式。我们只需要通过使用python来请求这个数据就好了。 然后参考这篇文章 /81336/

依葫芦画瓢,就得到如下的代码

import urllibimport urllib2values={}values['from'] ='pc'values['os_ver'] ='1'values['cuid'] ='xxx'values['vv'] ='100'values['format'] ='json'values['stock_code'] ='sz300369'values['step'] ='3'values['start'] =startvalues['count'] ='320'values['fq_type'] ='no'values['timestamp'] ='1480063069006'data = urllib.urlencode(values)url = "/api/stocks/stockdaybar"geturl = url + "?"+dataprint(geturl)request = urllib2.Request(geturl)response = urllib2.urlopen(request)

完成获取所有股票数据的代码如下 从文件123.txt读出所有股票的代码。仅限上证

__author__ = 'bestboyxie'import urllibimport urllib2import cookielibimport codecsimport jsonimport reimport threadimport time#/api/stocks/stockdaybar?from=pc&os_ver=1&cuid=xxx&vv=100&format=json&stock_code=sh000001&step=3&start=0710&count=320&fq_type=no×tamp=1480054552865#/api/stocks/stockdaybar?from=pc&os_ver=1&cuid=xxx&vv=100&format=json&stock_code=sz300369&step=3&start=0706&count=320&fq_type=no×tamp=1480055288950def getdata(start,stock_code):values={}values['from'] ='pc'values['os_ver'] ='1'values['cuid'] ='xxx'values['vv'] ='100'values['format'] ='json'values['stock_code'] =stock_codevalues['step'] ='3'values['start'] =startvalues['count'] ='320'values['fq_type'] ='no'values['timestamp'] ='1480063069006'data = urllib.urlencode(values)url = "/api/stocks/stockdaybar"geturl = url + "?"+dataprint(geturl)request = urllib2.Request(geturl)cookie = cookielib.CookieJar()handler=urllib2.HTTPCookieProcessor(cookie)opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))response = opener.open(request)#print response.read()output= codecs.open(stock_code+"_stockdaybar.txt", "a+", "utf-8")response_str=response.read()mindate = int(values['start'])jsona = json.loads(response_str,'utf-8')if 'mashData' in jsona:mashDatas = jsona['mashData']output.write(json.dumps(jsona['mashData']))for mashData in mashDatas:date = int(mashData['date'])if mindate - date >0:mindate = dateprint(mindate)output.close()return mindatedef filetoarray(filename):IDXfile = open(filename, 'r')fileread=IDXfile.read()IDXfile.close()p = pile(r"\d+")l = p.findall(fileread)return ldef down2file(threadName, stock):date = 1125name =""if stock > 600000 and stock < 604000 :name ='sh'+str(stock)else :returnlast_data = 0while last_data!= date:last_data = datedate = getdata(last_data,name)stock_all = filetoarray("123.txt")for stock in stock_all:thread.start_new_thread(down2file,(str(stock),int(stock)))time.sleep(1)#print response.read()

其中123.txt的格式如下 浦发银行(600000)邯郸钢铁(600001)ST东北高(600003)白云机场(600004)武钢股份(600005)东风汽车(600006)中国国贸(600007)首创股份(600008)上海机场(600009)包钢股份(600010)华能国际(600011)皖通高速(600012)华夏银行(600015)民生银行(600016)日照港(600017)上港集团(600018)宝钢股份(600019)中原高速(600020)上海电力(600021)山东钢铁(600022)浙能电力(600023)中海发展(600026)华电国际(600027)中国石化(600028)南方航空(600029)中信证券(600030)三一重工(600031)福建高速(600033)楚天高速(600035)招商银行(600036)歌华有线(600037)中直股份(600038)四川路桥(600039)保利地产(600048)中国联通(600050)宁波联合(600051)浙江广厦(600052)九鼎投资(600053)黄山旅游(600054)万东医疗(600055)中国医药(600056)象屿股份(600057)五矿发展(600058)古越龙山(600059)海信电器(600060)国投安信(600061)华润双鹤(600062)皖维高新(600063)南京高科(600064)宇通客车(600066)冠城大通(600067) 葛洲坝(600068) 银鸽投资(600069)

参考 /81359/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。