范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Python爬虫获取双色球历史开奖数据

  看到昨天大乐透的开奖数据心都凉了半截,全奇数,脑洞大开,所以今天不说选号,直接来硬核技术,教大家爬虫技术 取历史开奖数据
  大致分为以下三步 确定目标网络
  即,要找到一个有记录开奖数据的网站,有很多,具体在网上搜索一下 观察网站结构
  通过访问网站,打开浏览器控制台,或者把鼠标点到浏览器地址栏,然后按下键盘的F12,仔细观察一下,网站的html结构特点,一般来讲数据类展示网站都会有一些固定的结构特点 最后编写代码
  关于Python爬虫,最常见的反爬虫技术有以下几类,当然还有很多其他的方法: User-Agent伪装:将请求头中的User-Agent设置为浏览器的User-Agent,从而让服务器认为请求来自浏览器而不是爬虫程序。 IP代理:使用代理IP访问网站,降低被网站识别的概率。 验证码识别:有些网站会在登陆、注册、搜索等操作时强制进行验证码校验,可以使用第三方的验证码识别库或者打码平台来识别验证码。 访问频率控制:爬虫程序的访问频率过高可能会引起服务器的反感,因此可以采用一些方法控制访问频率,比如设置访问间隔、使用分布式爬虫等。 随机延时:在爬虫程序中设置随机延时,模拟人类的访问行为,从而减少被识别的概率。 动态解析:一些网站使用了一些JS渲染或者Ajax动态加载,这种情况下需要使用Selenium等工具模拟用户操作,获取到完整的页面数据。 隐藏身份:避免使用同一个IP或者同一个User-Agent等信息访问网站,可以采用多种手段,如使用Tor、VPN等来隐藏身份。
  需要注意的是,反爬虫技术是一种违反网站协议和法律法规的行为,应该在遵守相关法律法规的前提下进行使用。
  针对以上几点可能情况,简单的写一些示例 User-Agent伪装:  import requests    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}  response = requests.get("http://www.example.com", headers=headers)IP代理:  import requests    proxies = {"http": "http://123.123.1.10:3128", "https": "http://123.123.1.10:1080"}  response = requests.get("http://www.example.com", proxies=proxies)验证码识别:  import requests  from PIL import Image  from io import BytesIO    # 获取验证码图片  response = requests.get("http://www.example.com/captcha")  img = Image.open(BytesIO(response.content))    # 识别验证码  code = recognize_captcha(img)  data = {"username": "your_username", "password": "your_password", "captcha": code}    # 提交表单  response = requests.post("http://www.example.com/login", data=data)访问频率控制:  import time  import requests    while True:      response = requests.get("http://www.example.com")      time.sleep(10)  # 每隔10秒访问一次随机延时:  import random  import requests    while True:      response = requests.get("http://www.example.com")      time.sleep(random.randint(1, 10))  # 随机延时1到10秒动态解析:  from selenium import webdriver    driver = webdriver.Chrome()  driver.get("http://www.example.com")  content = driver.page_source隐藏身份:  import requests    session = requests.session()  session.proxies = {"http": "socks5h://localhost:9050", "https": "socks5h://localhost:9050"}  session.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}    response = session.get("http://www.example.com")直入正题,上代码Python代码Class部分如下 class ScraperDoubleColorData:      def __init__(self, limit=None, sort=0):          self.url = os.environ.get("SSQ_HISTORY_URL")          self.limit = limit          self.sort = sort          self.options = webdriver.ChromeOptions()          self.options.add_argument("headless")  # 在无头模式下运行Chrome          self.options.add_argument("window-size=1200x600")  # 设置窗口大小          self.driver = webdriver.Chrome(options=self.options)        def scrape_data(self):          request_url = f"{self.url}?limit={self.limit}&sort={self.sort}"          self.driver.get(request_url)  # 在无头浏览器中打开网页          time.sleep(2)  # 等待页面加载完成(根据需要可以调整延迟时间)          # 使用BeautifulSoup解析页面源代码          soup = BeautifulSoup(self.driver.page_source, "html.parser")          data = soup.find("tbody", id="tdata")  # 找到包含数据的表格          results = {}          for row in data.find_all("tr", class_="t_tr1"):  # 遍历所有数据行              temp_data = {}              t_tr1_text = row.find("td").text              cfont2_text = [td.text for td in row.find_all(                  "td", class_="t_cfont2")]              cfont4_text = row.find("td", class_="t_cfont4").text              value = f"红球 {",".join(cfont2_text)} 蓝球 {cfont4_text}"              temp_data["红球"] = ",".join(cfont2_text)              temp_data["蓝球"] = cfont4_text              # 将提取的数据存储为字典              results[f"第{t_tr1_text}期"] = temp_data              # 打印提取的数据              print(f"第{t_tr1_text}期 {value}")          return results        def close_browser(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  参数来控制排序
  sort=0  代表升序,即  1,2,3,4,5,6,7,8,9
  sort=1  代表倒序,即  9,8,7,6,5,4,3,2,1  历史数据分析Python代码Class部分如下   class HistoryData:      def __init__(self, big_nums, even_nums, area_1, area_2, area_3, data):          """         构造函数,初始化实例变量         :param big_nums: 大数正则表达式         :param even_nums: 偶数正则表达式         :param area_1: 区间一正则表达式         :param area_2: 区间二正则表达式         :param area_3: 区间三正则表达式         :param data: 数据         """          self.big_nums = big_nums          self.even_nums = even_nums          self.area_1 = area_1          self.area_2 = area_2          self.area_3 = area_3          self.data = data        def analysis_data(self):          """         对 data 进行分析,并返回一个列表,其中包含每个记录的详细信息。         :return: 历史数据详情列表         """          history_data_detail = []            for key, value in self.data.items():              redball = value.get("红球")              # 获取大数的数量              big_small = len(re.findall(self.big_nums, redball))              # 获取偶数的数量              odd_even = len(re.findall(self.even_nums, redball))              # 获取区间一的数量              first = len(re.findall(self.area_1, redball))              # 获取区间二的数量              second = len(re.findall(self.area_2, redball))              # 获取区间三的数量              third = len(re.findall(self.area_3, redball))              # 计算红球和值              redball_sum = sum(map(int, redball.split(",")))                # 将历史数据的详细信息添加到列表中              history_data_detail.append((big_small, odd_even, first, second, third, key, redball, redball_sum))            # 返回历史数据详情列表          return history_data_detail输出结果如下 第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
  爬虫有风险,使用需谨慎!仅供参与学习使用,不作其他用途!

救下全部5人!这对父女找到了车辆落水,5人被困危急时刻,一对父女路过与众人展开生死救援近日,这对父女找到了!他们是父亲吕振康和女儿吕智慧车辆落水,5人被困路过父女参与救援27日,安徽阜阳一辆轿车意外翻入水沟内36毫米的劳力士,男女通吃,但更适合男士腕表之家钟表技术36毫米,是劳力士一个经典且神奇的尺寸。现在,名表的尺寸普遍偏大,男表尺寸通常在40毫米左右,或40毫米以上女表尺寸,像罗杰杜彼沛纳海的女表都已经达到了36毫米38狂飙看到结局才发现安长林是败笔,养子养女都是狼崽子我是原创作者小董乘风破浪。这部剧拍得挺好的,在我看来是鼓励生育的一部剧,以饺子开头,又以饺子结束。阿强最后还在试图挽回在妹妹心中的形象,阿兰让他说,他反过来让阿兰问,阿兰能知道什么胡鑫宇案已经定型,为何还遭质疑?难道真的是公信力下降了么?经公安机关发布的详细材料来看,其中包括现场认定,遗体的各个器官完整度,还有公布录音笔内容,以及再用他杀推理的动机,以及推理他杀(伪造自杀现场)形式可能性都给排除了,在实事求是的证据中国漫画第一人丰子恺儿童漫画选3丰子恺是中国引进漫画概念的第一人,其漫画作品多以儿童为题材,富有童趣幽默睿智反映社会现象。在头条看见彼此漫画分享青梅丰子恺人都说我是中国漫画的创始者,这话半是半非。我小时候,太平洋不孕,做这类检查会痛吗?当今社会,不孕症的几率逐年上升,不孕的女性做输卵管造影和输卵管通液的几率也上升。输卵管是精子和卵子自然结合的必经之路,此路不通就会引起不孕。临床上如经过1年试孕后还不能怀孕,就得考3次怀孕3次生化,泰国DHC试管1次成功!在成为母亲的路上,每一位女性都面临巨大的牺牲。X女士更是如此。她结婚6年,3次怀孕却3次生化妊娠(包括一次自怀两次试管)。每当满怀欣喜地期待宝宝降生时,幸福总是戛然而止。随之而来的青春期脸上不同部位长痘痘,是什么原因呢?青春期是身体发育的关键时期,也是很多人面对脸上长痘痘的时期。青春期脸上长痘痘的原因主要是由于荷尔蒙的变化。在青春期,雄性激素和雌性激素的水平会增加,这可能会导致皮脂分泌增多,从而导奋斗者正青春丨李华柏争做党建与学术带头人李华柏老师(右一)带领学生参加技能比赛。红网时刻新闻记者潘锦通讯员刘澎钰综合报道李华柏是湖南铁道职业技术学院机车车辆学院铁道车辆系主任,也是维修电工高级考评员轨道列车司机高级考评员重磅!最新保险机构官方评级来了!这16家公司惨遭评级下调!北青金融记者了解到,近日,中国保险行业协会(以下简称保险业协会)于官网披露2021年度保险公司法人机构经营评价结果。据公告显示,本次披露涉及保险公司共160家,其中财产险公司79家虚情假意!NBA裁判协会致歉詹姆斯,官方报告湖人仍2次获利一场经典的黄绿大战,裁判完美抢戏,詹姆斯突破上篮被塔图姆打手犯规惨遭无视,三旬老汉跪地祈求,当值裁判漠然置之,让人破防。尽管在赛后,NBA裁判官方迅速向湖人表态詹姆斯确实被塔图姆犯
宝宝一大便就哭闹不止竟是先天性肛门闭锁惹得祸非常感谢小儿外科的医生们,解决了困扰我们全家人的难题,孩子以后总算可以正常排便了。不久前,悦悦(化名)的父母将一封感谢信和一面锦旗送到了河南科技大学第一附属医院(以下简称河科大一附中医治疗高血压验方天麻钩藤饮高血压病是现代医学的病名,古代中医无相应的疾病名称记载,因头痛头晕目眩耳鸣多为其主要临床症候,因此大多数医家将其中医病名归属于眩晕头痛的范畴。其记载最早见于内经,如素问标本病传论中身体哪不好,阳过一次就知道,老中医告诉你这些后遗症代表了什么身体哪不好,阳过一次就知道,大家好,我是贾医生。很多人在新冠痊愈后啊,出现了一些后遗症,比如说容易疲惫,嗜睡,或者嗓子干痛等等,那么不同的后遗症代表着你的身体出现了哪些问题呢?如果中医治疗孤独症(心脾两虚型)经方1首,健脾益气,启闭醒神方药石菖蒲,远志,郁金,茯神,党参,炒白术,陈皮,桂枝,白芍,红景天,柴胡,酸枣仁,生龙骨(先煎),牡蛎(先煎),建曲,鸡内金,炙甘草。主治孤独症(心脾两虚型)。辨证心脾两虚,心神中医治疗失眠(痰热扰心型)验方黄连温胆汤失眠,亦称不寐不得眠不得卧,是以经常不能获得正常睡眠为特征的一种病证,多见于西医学的神经官能症更年期综合征脑动脉硬化等患者。轻者入睡困难,或睡而不深,时睡时醒,或醒后不能再睡,严重我们和ChatGPT聊了聊理想汽车鬼跟车,它说别不当回事作者小张ChatGPT图片来源官网理想汽车鬼跟车事件发酵后,我们第一时间请教了ChatGPT。以下为OPENAI工具ChatGPT对理想鬼跟车事件的解读近日,一则关于理想汽车鬼跟车手把手教你如何下载并安装MySQL数据库作为开发人员,数据库几乎是绕不开的话题,而我正好最近刚开始研究数据库方面的知识。今天我就将我学习的的经验分享给大家,带领大家一步一步地从零开始,下载并安装一款适合入门而且免费的数据英特尔i713700K处理器16核24线程睿频至高可达5。4Ghz30M三级缓存12490F配最强华硕B660F主板,同时兼容1213代CPU,最重要的是这块板可以超外频!超外频!手动滑稽,虽然没试,充满期待。这块U表现满意,还没用PCIE4。0的高规格固态硬从B站的百大UP主名单,看到了小众文化崛起的趋势编者荐语以后的世界可能是这样的圈层化即将到来,盔甲战术装备模型钓鱼舞蹈Cosplay大家会根据自己的爱好分流进入各个只有几万人十几万人的小市场,某种意义上来说,我们即将迎来一个百花西安创优互娱分享冒险手游遇见龙新手攻略西安创优互娱分享冒险手游遇见龙新手攻略。遇见龙是一款以驯龙冒险为题材的3D回合制卡牌对战手游,50条传说级神龙,三段式进阶造型升级。经典回合制玩法,轻松上手无门槛。合理搭配阵容,可磬弦奏华夜3。4版本更新维护预告亲爱的旅行者制作组将于近期进行版本更新维护,维护期间无法登录游戏。请旅行者留意游戏时间。维护完成后游戏将更新为全新版本,建议旅行者在WIFI环境下升级。更新时间2023011806