import requests #这个导入库需要自己下载
import re
import pandas as pd
import time
#生成链接
header={
'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'
}
base_url='https://www.lottery.gov.cn/kjpls/{}.html'
data=[]
#改变range值控制url数量
for i in range(14233,14445):
new_url=base_url.format(i)
#获取数据并且整合
r=requests.get(new_url,headers=header)
r.encoding=r.apparent_encoding
date=re.findall(r'期于(.+?)开奖',r.text)[0]
if re.findall(r'投注总额(.+?) 元。',r.text) == []: #判断缺失值
amount=-1
else :
amount=re.findall(r'投注总额(.+?) 元。',r.text)[0]
result=re.findall(r'开奖结果: (.+?)<.+?>',r.text)[0]
data.append(
#date帮你改成了时间格式
[date,amount,result]
)
#爬取多个网站的时候可以设置延迟,或者加个if判断每爬几个网站暂停一段时间
if i%7==0:
print(i)
time.sleep(3)
elif i%2==0:
time.sleep(2)
#date[:4]+date[6:8]+date[10:12]
14238 14245 14252 14259 14266 14273 14280 14287 14294 14301 14308 14315 14322 14329 14336 14343 14350 14357 14364 14371 14378 14385 14392 14399 14406 14413 14420 14427 14434 14441
i
14444
#保存数据
title=['date','amount','result']
df=pd.DataFrame(data,columns=title).set_index('date')
df.to_csv('data14233--14445-1--na.csv')
df=pd.read_csv('data14233--14445-1--na.csv',parse_dates=['date'])
df.head(-10)
date | amount | result | |
---|---|---|---|
0 | 2014 年01 月14 日 | -1 | 5 3 5 |
1 | 2014 年01 月15 日 | 17,874,118 | 1 7 5 |
2 | 2014 年01 月16 日 | -1 | 9 8 2 |
3 | 2014 年01 月17 日 | -1 | 0 7 1 |
4 | 2014 年01 月18 日 | -1 | 0 2 1 |
... | ... | ... | ... |
197 | 2014 年08 月07 日 | 14,826,202 | 2 0 5 |
198 | 2014 年08 月08 日 | 15,116,914 | 0 5 6 |
199 | 2014 年08 月09 日 | 14,274,666 | 7 7 5 |
200 | 2014 年08 月10 日 | 14,198,140 | 2 1 4 |
201 | 2014 年08 月11 日 | 15,260,976 | 6 0 9 |
202 rows × 3 columns
#data
#title=['date','amount','result']
#df1=pd.DataFrame(data,columns=title)
#df1.info()
df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 212 entries, 0 to 211 Data columns (total 3 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 date 212 non-null object 1 amount 212 non-null object 2 result 212 non-null object dtypes: object(3) memory usage: 5.1+ KB