一步一步来,要获得双色球开奖号码,首先我们需要打开彩票网站
https://kaijiang.500.com/shtml/ssq/20093.shtml
用request库,可以很方便地得到html文件。requests.get()函数返回一个response对象,传递参数url是目标网页地址。requests.get()函数后面加上“.text”,以便将response对象转换成字符串。
import requests
def turn_page():
url = "http://kaijiang.500.com/ssq.shtml"
html = requests.get(url).text
在浏览器打开上述url,右击选择【查看源文件】,通过分析源文件,找到需要爬取的数据,制定合适的爬取方案。从图中可以看到,这个源文件包含了每一期的网页链接,并且所有链接都在一个类名为“iSelectList”的
标签中。
这意味着我们能够一次就把所有链接保存到一个列表中,之后只需按照列表顺序逐个打开链接爬取数据就可以了。
想要得到html源文件,可以使用BeautifulSoup
BeautifulSoup是一个可以从HTML或XML文件中提取数据的第三方库
BeautifulSoup()函数有两个参数,第一个参数是要解析的HTML/XML代码,第二个参数是解析器。
在这里我们以前面requests.get()返回的html作为第一个参数,'html.parser’是Python内置的解析器(标准库)
解析html后,得到一个BeautifulSoup 的对象,即变量soup
BS支持大部分的CSS选择器,在BS对象的.select()方法传入字符串参数,即可使用CSS选择器的语法查到tag(标签)
前面我们已经知道,开奖号码的页面链接在一个class为“iSelectList”的
标签中
而链接是用标签标示的,所以我们在select()方法中传入的参数是“div.iSelectList a”
即,选择所有在class为“iSelectList”的
标签中的
标签。
import requests
from bs4 import BeautifulSoup
def turn_page():
url = "http://kaijiang.500.com/ssq.shtml"
html = requests.get(url).text
soup = BeautifulSoup(html, 'html.parser')
pageList = soup.select("div.iSelectList a")
现在我们已经得到包含所有结果链接的标签并赋值给列表变量pageList
用一个for循环语句,遍历pageList中的每一个元素,p[‘href’]用于提取链接,p.string用于提取标签中的字符串(即期数)
import requests
from bs4 import BeautifulSoup
def turn_page():
url = "http://kaijiang.500.com/ssq.shtml"
html = requests.get(url).text soup = BeautifulSoup(html,'html.parser')
pageList = soup.select("div.iSelectList a")
for p in pageList:
url = p['href'] #提取链接
page = p.string #提取字符串
通过观察源文件,发现开奖号码由无序标签(ul li)定义,并且在一个class为“ball_box01”的
标签中
声明一个函数download(),形参url是要提取开奖号码的页面链接,page是开奖期数
变量html和soup和前面一样,在此不再赘述
用CSS选择器语法select(‘div.ball_box01 ul li’)得到开奖号码所在的
- 标签,赋值给列表变量list
- 声明一个空的列表变量ball,for循环语句遍历list,提取每一个开奖号码(li.string)并添加到ball列表
def download(url,page):
html = requests.get(url).text
soup = BeautifulSoup(html,'html.parser')
list = soup.select('div.ball_box01 ul li')
ball = [] for li in list:
ball.append(li.string)
声明一个函数write_to_excel(),形参page是开奖期数,ball是相应期数开奖号码
用Python的file方法把每一期的开奖号码写入csv表格文件中
为了避免出现乱码,打开csv文件时加上encoding=“utf_8_sig”
def write_to_excel(page,ball):
f = open('双色球开奖结果.csv','a',encoding='utf_8_sig')
f.write(f'第{page}期,{ball[0]},{ball[1]},{ball[2]},{ball[3]},{ball[4]},{ball[5]},{ball[6]}\n')
f.close()
声明函数main(),作为程序入口
如果exists()函数发现存在同名的csv文件,就会删除
在主函数main()调用turn_page()函数
def main():
if(os.path.exists('双色球开奖结果.csv')):
os.remove('双色球开奖结果.csv')
turn_page()
至此,开奖结果的爬取与保存已完成,整合看下结果
完整的代码:
import requests
import osfrom bs4 import BeautifulSoup
def download(url, page): html = requests.get(url).text soup = BeautifulSoup(html, 'html.parser')
list = soup.select('div.ball_box01 ul li')
ball = [] for li in list:
ball.append(li.string) write_to_excel(page, ball) print(f"第{page}期开奖结果录入完成")
def write_to_excel(page, ball):
f = open('双色球开奖结果.csv', 'a', encoding='utf_8_sig')
f.write(f'第{page}期,{ball[0]},{ball[1]},{ball[2]},{ball[3]},{ball[4]},{ball[5]},{ball[6]}\n')
f.close()def turn_page():
url = "http://kaijiang.500.com/ssq.shtml"
html = requests.get(url).text soup = BeautifulSoup(html, 'html.parser')
pageList = soup.select("div.iSelectList a")
for p in pageList:
url = p['href']
page = p.string download(url, page)def main():
if (os.path.exists('双色球开奖结果.csv')):
os.remove('双色球开奖结果.csv')
turn_page()if __name__ == '__main__':
main()
运行结果如下:
看下是否有保存
我们打开这个工作表,是不是有数据了?为什么只有这么点数据呢,原因是小编只需要2020年的开奖结果,所以就手动停止了程序。
来吧,数据有了,我们来进行数据分析
下面就统计下蓝球在今年出现的频率,并实现数据可视化,直接撸(代码里面有解释)
import pandas as pd
import numpy as npimport matplotlib.pyplot as plt#读取双色球开奖结果.csv文件df = pd.read_table('双色球开奖结果.csv',header=None,sep=',')
# print df
# print df[1:3] #第2到第3行(索引0开始为第一行,1代表第二行,不包含第四行)
# print df.loc[0:10,:] #第1行到第9行的全部列
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
### 一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

### 二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

### 三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

### 四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

### 五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

### 六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化学习资料的朋友,可以戳这里无偿获取](https://bbs.csdn.net/topics/618317507)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**