利用Python爬取彩票信息

阅读: 评论:0

利用Python爬取彩票信息

利用Python爬取彩票信息

在爬取一些简单的(没有反爬机制的)静态网页时,一般采取的策略是:选中目标(所谓的url链接),观察结构(链接结构,网页结构),构思动手(选用什么HTML下载器,解析器等)。在爬虫过程中,都会涉及到三种利器:

HTML下载器:下载HTML网页

HTML解析器:解析出有效数据
数据存储器:将有效数据通过文件或者数据库的形式存储起来

今天,我们将利用requests库和BeautifulSoup模块来抓取中彩网页福彩3D相关的信息,并将其保存到Excel表格中。

在开始前,先分析看看目标网页的结构:

可以发现,目标网页的URL .html,每次变化一处:list_x后面的数字,其代表第几页。

然后,观察其网页结构,也很简单,可以看到一期的彩票信息对应的源代码是一个tr节点,我们可以用BeautifulSoup库来提取这里面的一些信息。

整体思路是:若要获取福彩3D创办14年以来所有的信息(一共246页),只需要分开请求246次,这样获取不同的页面之后,再利用BeautifulSoup库提取到相关信息,利用xlrd库将数据写入Excel中,就可以获取到福彩3D所有的信息,结果如下图:

(一共将近5000条数据)

详情代码如下:

import requests

from bs4 import BeautifulSoup

import xlwt

import time

获取第一页的内容

def get_one_page(url):

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36'}response = (url,headers=headers)if response.status_code == 200:turn None

解析第一页内容,数据结构化

def parse_one_page(html):

soup = BeautifulSoup(html,'lxml')i = 0for item in soup.select('tr')[2:-1]:yield{'time':item.select('td')[i].text,'issue':item.select('td')[i+1].text,'digits':item.select('td em')[0].text,'ten_digits':item.select('td em')[1].text,'hundred_digits':item.select('td em')[2].text,'single_selection':item.select('td')[i+3].text,'group_selection_3':item.select('td')[i+4].text,'group_selection_6':item.select('td')[i+5].text,'sales':item.select('td')[i+6].text,'return_rates':item.select('td')[i+7].text}

将数据写入Excel表格中

def write_to_excel():

f = xlwt.Workbook()                             sheet1 = f.add_sheet('3D',cell_overwrite_ok=True)row0 = ["开奖日期","期号","个位数","十位数","百位数","单数","组选3","组选6","销售额","返奖比例"]#写入第一行for j in range(0,len(row0)):sheet1.write(0,j,row0[j])#依次爬取每一页内容的每一期信息,并将其依次写入Exceli=0for k in range(1,247):url = '.html' %(str(k))html = get_one_page(url)print('正在保存第%d页。'%k)#写入每一期的信息for item in parse_one_page(html):sheet1.write(i+1,0,item['time'])sheet1.write(i+1,1,item['issue'])sheet1.write(i+1,2,item['digits'])sheet1.write(i+1,3,item['ten_digits'])sheet1.write(i+1,4,item['hundred_digits'])sheet1.write(i+1,5,item['single_selection'])sheet1.write(i+1,6,item['group_selection_3'])sheet1.write(i+1,7,item['group_selection_6'])sheet1.write(i+1,8,item['sales'])sheet1.write(i+1,9,item['return_rates'])i+=1f.save('3D.xls')

def main():

write_to_excel()

if name == ‘main‘:

main()

本文发布于:2024-01-31 20:50:37,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170670543731267.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:彩票   信息   Python
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23