Python爬虫获取双色球历史开奖数据
看到昨天大乐透的开奖数据心都凉了半截,全奇数,脑洞大开,所以今天不说选号,直接来硬核技术,教大家爬虫技术取历史开奖数据
大致分为以下三步确定目标网络
即,要找到一个有记录开奖数据的网站,有很多,具体在网上搜索一下观察网站结构
通过访问网站,打开浏览器控制台,或者把鼠标点到浏览器地址栏,然后按下键盘的F12,仔细观察一下,网站的html结构特点,一般来讲数据类展示网站都会有一些固定的结构特点最后编写代码
关于Python爬虫,最常见的反爬虫技术有以下几类,当然还有很多其他的方法:UserAgent伪装:将请求头中的UserAgent设置为浏览器的UserAgent,从而让服务器认为请求来自浏览器而不是爬虫程序。IP代理:使用代理IP访问网站,降低被网站识别的概率。验证码识别:有些网站会在登陆、注册、搜索等操作时强制进行验证码校验,可以使用第三方的验证码识别库或者打码平台来识别验证码。访问频率控制:爬虫程序的访问频率过高可能会引起服务器的反感,因此可以采用一些方法控制访问频率,比如设置访问间隔、使用分布式爬虫等。随机延时:在爬虫程序中设置随机延时,模拟人类的访问行为,从而减少被识别的概率。动态解析:一些网站使用了一些JS渲染或者Ajax动态加载,这种情况下需要使用Selenium等工具模拟用户操作,获取到完整的页面数据。隐藏身份:避免使用同一个IP或者同一个UserAgent等信息访问网站,可以采用多种手段,如使用Tor、VPN等来隐藏身份。
需要注意的是,反爬虫技术是一种违反网站协议和法律法规的行为,应该在遵守相关法律法规的前提下进行使用。
针对以上几点可能情况,简单的写一些示例UserAgent伪装:importrequestsheaders{UserAgent:Mozilla5。0(WindowsNT10。0;Win64;x64)AppleWebKit537。36(KHTML,likeGecko)Chrome58。0。3029。110Safari537。3}responserequests。get(http:www。example。com,headersheaders)IP代理:importrequestsproxies{http:http:123。123。1。10:3128,https:http:123。123。1。10:1080}responserequests。get(http:www。example。com,proxiesproxies)验证码识别:importrequestsfromPILimportImagefromioimportBytesIO获取验证码图片responserequests。get(http:www。example。comcaptcha)imgImage。open(BytesIO(response。content))识别验证码coderecognizecaptcha(img)data{username:yourusername,password:yourpassword,captcha:code}提交表单responserequests。post(http:www。example。comlogin,datadata)访问频率控制:importtimeimportrequestswhileTrue:responserequests。get(http:www。example。com)time。sleep(10)每隔10秒访问一次随机延时:importrandomimportrequestswhileTrue:responserequests。get(http:www。example。com)time。sleep(random。randint(1,10))随机延时1到10秒动态解析:fromseleniumimportwebdriverdriverwebdriver。Chrome()driver。get(http:www。example。com)contentdriver。pagesource隐藏身份:importrequestssessionrequests。session()session。proxies{http:socks5h:localhost:9050,https:socks5h:localhost:9050}session。headers{UserAgent:Mozilla5。0(WindowsNT10。0;Win64;x64)AppleWebKit537。36(KHTML,likeGecko)Chrome58。0。3029。110Safari537。3}responsesession。get(http:www。example。com)直入正题,上代码Python代码Class部分如下classScraperDoubleColorData:definit(self,limitNone,sort0):self。urlos。environ。get(SSQHISTORYURL)self。limitlimitself。sortsortself。optionswebdriver。ChromeOptions()self。options。addargument(headless)在无头模式下运行Chromeself。options。addargument(windowsize1200x600)设置窗口大小self。driverwebdriver。Chrome(optionsself。options)defscrapedata(self):requesturlf{self。url}?limit{self。limit}sort{self。sort}self。driver。get(requesturl)在无头浏览器中打开网页time。sleep(2)等待页面加载完成(根据需要可以调整延迟时间)使用BeautifulSoup解析页面源代码soupBeautifulSoup(self。driver。pagesource,html。parser)datasoup。find(tbody,idtdata)找到包含数据的表格results{}forrowindata。findall(tr,classttr1):遍历所有数据行tempdata{}ttr1textrow。find(td)。textcfont2text〔td。textfortdinrow。findall(td,classtcfont2)〕cfont4textrow。find(td,classtcfont4)。textvaluef红球{,。join(cfont2text)}蓝球{cfont4text}tempdata〔红球〕,。join(cfont2text)tempdata〔蓝球〕cfont4text将提取的数据存储为字典results〔f第{ttr1text}期〕tempdata打印提取的数据print(f第{ttr1text}期{value})returnresultsdefclosebrowser(self):self。driver。quit()关闭无头浏览器输出结果如下第23001期红球09,16,18,22,28,32蓝球02第23002期红球02,06,10,16,18,22蓝球13第23003期红球05,08,18,25,30,32蓝球06第23004期红球01,07,15,16,20,25蓝球16第23005期红球02,06,08,13,14,19蓝球16第23006期红球02,10,12,14,24,26蓝球05第23007期红球05,06,09,22,25,31蓝球03第23008期红球05,13,18,20,26,28蓝球06第23009期红球03,04,19,23,30,32蓝球06第23010期红球04,05,13,18,27,29蓝球12第23011期红球06,07,16,17,21,22蓝球04第23012期红球03,04,07,22,26,30蓝球06第23013期红球06,10,14,22,23,33蓝球13第23014期红球06,07,18,23,27,30蓝球05第23015期红球02,03,14,21,29,32蓝球08第23016期红球14,16,19,23,28,30蓝球03第23017期红球05,11,18,20,26,28蓝球12第23018期红球10,12,17,19,25,31蓝球13第23019期红球06,12,26,28,29,32蓝球15第23020期红球01,12,17,18,26,27蓝球05第23021期红球02,05,06,19,21,27蓝球04第23022期红球10,11,18,19,23,31蓝球03第23023期红球05,08,10,15,24,25蓝球09Tips
可以通过调整limit参数来爬取数据范围,例如设置为100,就会提取最近100期的数据,
另外可以通过sort参数来控制排序
sort0代表升序,即1,2,3,4,5,6,7,8,9
sort1代表倒序,即9,8,7,6,5,4,3,2,1历史数据分析Python代码Class部分如下classHistoryData:definit(self,bignums,evennums,area1,area2,area3,data):构造函数,初始化实例变量:parambignums:大数正则表达式:paramevennums:偶数正则表达式:paramarea1:区间一正则表达式:paramarea2:区间二正则表达式:paramarea3:区间三正则表达式:paramdata:数据self。bignumsbignumsself。evennumsevennumsself。area1area1self。area2area2self。area3area3self。datadatadefanalysisdata(self):对data进行分析,并返回一个列表,其中包含每个记录的详细信息。:return:历史数据详情列表historydatadetail〔〕forkey,valueinself。data。items():redballvalue。get(红球)获取大数的数量bigsmalllen(re。findall(self。bignums,redball))获取偶数的数量oddevenlen(re。findall(self。evennums,redball))获取区间一的数量firstlen(re。findall(self。area1,redball))获取区间二的数量secondlen(re。findall(self。area2,redball))获取区间三的数量thirdlen(re。findall(self。area3,redball))计算红球和值redballsumsum(map(int,redball。split(,)))将历史数据的详细信息添加到列表中historydatadetail。append((bigsmall,oddeven,first,second,third,key,redball,redballsum))返回历史数据详情列表returnhistorydatadetail输出结果如下第23001期红球:09,16,18,22,28,32奇偶比:1:5,大小比:4:2,区间比:1:3:2和值:125第23002期红球:02,06,10,16,18,22奇偶比:0:6,大小比:2:4,区间比:3:3:0和值:74第23003期红球:05,08,18,25,30,32奇偶比:2:4,大小比:4:2,区间比:2:1:3和值:118第23004期红球:01,07,15,16,20,25奇偶比:4:2,大小比:2:4,区间比:2:3:1和值:84第23005期红球:02,06,08,13,14,19奇偶比:2:4,大小比:1:5,区间比:3:3:0和值:62第23006期红球:02,10,12,14,24,26奇偶比:0:6,大小比:2:4,区间比:2:2:2和值:88第23007期红球:05,06,09,22,25,31奇偶比:4:2,大小比:3:3,区间比:3:1:2和值:98第23008期红球:05,13,18,20,26,28奇偶比:2:4,大小比:4:2,区间比:1:3:2和值:110第23009期红球:03,04,19,23,30,32奇偶比:3:3,大小比:4:2,区间比:2:1:3和值:111第23010期红球:04,05,13,18,27,29奇偶比:4:2,大小比:3:3,区间比:2:2:2和值:96第23011期红球:06,07,16,17,21,22奇偶比:3:3,大小比:3:3,区间比:2:4:0和值:89第23012期红球:03,04,07,22,26,30奇偶比:2:4,大小比:3:3,区间比:3:1:2和值:92第23013期红球:06,10,14,22,23,33奇偶比:2:4,大小比:3:3,区间比:2:2:2和值:108第23014期红球:06,07,18,23,27,30奇偶比:3:3,大小比:4:2,区间比:2:1:3和值:111第23015期红球:02,03,14,21,29,32奇偶比:3:3,大小比:3:3,区间比:2:2:2和值:101第23016期红球:14,16,19,23,28,30奇偶比:2:4,大小比:4:2,区间比:0:3:3和值:130第23017期红球:05,11,18,20,26,28奇偶比:2:4,大小比:4:2,区间比:2:2:2和值:108第23018期红球:10,12,17,19,25,31奇偶比:4:2,大小比:4:2,区间比:1:3:2和值:114第23019期红球:06,12,26,28,29,32奇偶比:1:5,大小比:4:2,区间比:1:1:4和值:133第23020期红球:01,12,17,18,26,27奇偶比:3:3,大小比:4:2,区间比:1:3:2和值:101第23021期红球:02,05,06,19,21,27奇偶比:4:2,大小比:3:3,区间比:3:2:1和值:80第23022期红球:10,11,18,19,23,31奇偶比:4:2,大小比:4:2,区间比:2:2:2和值:112第23023期红球:05,08,10,15,24,25奇偶比:3:3,大小比:2:4,区间比:3:1:2和值:87
爬虫有风险,使用需谨慎!仅供参与学习使用,不作其他用途!
刚刚,华兴资本公告包凡正配合调查点蓝字关注,不迷路华兴资本创始人董事长包凡失联一直备受资本市场的关注,2月26日该公司公布了事件的最新进展。华兴资本控股26日晚间在港交所发布公告称,自2月16日以来,该公司一直尝
恐怖如斯的负债经济模式为什么改革开放40年经济发展得很好,现在的经济一下就蔫了,呈现的局面甚至是一副崩盘的态势。到底是哪个环节出现了问题?全世界近几十年发展的过程中,已经有好多国家用自己的亲身经历验证出
个人正常退休养老金待遇测算今天看到个有意思的东西,和大家分享一下。手把手教学。可以关注一下我哦呲牙不是国家养老金,只是测算,图个乐,别开通。先讲一下测算具体细则,操作步骤在后面,共八步。测算设定参数未来个人
美宇航局与SpaceX公司因故取消发射任务航天员在太空舱等待数小时来源海外网海外网2月27日电据美国有线电视新闻网报道,当地时间2月27日,在检测到地面系统出现问题后,美国太空探索技术公司(SpaceX)和美国宇航局取消将4名航天员送往国际空间站
市森林动物园听鸟语,闻花香,启动春游模式来源焦作市文化广电和旅游局新闻资讯春回大地,万物复苏,踏青正当时。为满足广大人民群众的文化生活需求,即日起,市森林动物园启动春季踏青活动。让我们带上家人,约上好友,走进森林动物园,
9种亲子游戏因危险被儿科医生拉入黑名单,已有孩子终身残废文菁妈古希腊哲学家感情是由交流堆积而成的,任何一种感情的升华都有赖于交流!虽然我们说父母跟孩子之间是血浓于水的关系,但是血浓于水也需要经常一起交流。而父母跟孩子一起做亲子游戏就是最
中国男篮8674战胜伊朗后,球迷建议乔帅这三人世界杯别再用了最近中国男篮终于迎来世预赛的最后一场比赛,这次面对的对手是伊朗这个老对手,最终以8674拿下对手,完成本次世预赛的两连胜。当然回顾整个比赛的过程大家可以发现,中国男篮虽然拿下伊朗,
世界极限运动会(中国)滑雪巡回赛总决赛苏翊鸣夺冠25日,世界极限运动会(中国)(XGAMESCHINA)2022滑雪巡回赛总决赛在吉林省吉林市北大湖滑雪度假区落幕,苏翊鸣以91。67分获得冠军。XGames是全球极限运动中水平最
陈戌源顶头上司在飞机起飞前被抓2010年足协的杨一民南勇等第一批官员被查,5个月后谢亚龙李东生等第二批腐败分子也应声落网。现在有先例可循,随着李铁陈戌源被抓,人民日报紧接着发文定调,无论牵联到谁,都一查到底!可
男篮世预赛后3人或离队老队长悬了两新人恐被乔帅裁掉!男篮世预赛完美收官战,乔尔杰维奇率领中国队取得两连胜。不过,在击败哈萨克和伊朗后,留给乔帅解决的问题依旧非常多。男篮的基本功依旧薄弱,球员对战术不熟悉,部分球员已不具备国家队实力。
陈妍希合体陈乔恩拍片输太狠!一个染金发变太妹一个烫卷发似贵妇对于三四十岁的女性来说,个人风格的塑造是非常重要的,如果风格没有选对的话,那么整个人看上就会显得很没气质,或许在年轻的时候,我们可以去尝试各种各样不同的风格,就算出错也可以从头再来