{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import requests #这个导入库需要自己下载\n", "import re\n", "import pandas as pd\n", "import time" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "14238\n", "14245\n", "14252\n", "14259\n", "14266\n", "14273\n", "14280\n", "14287\n", "14294\n", "14301\n", "14308\n", "14315\n", "14322\n", "14329\n", "14336\n", "14343\n", "14350\n", "14357\n", "14364\n", "14371\n", "14378\n", "14385\n", "14392\n", "14399\n", "14406\n", "14413\n", "14420\n", "14427\n", "14434\n", "14441\n" ] } ], "source": [ "#生成链接\n", "header={\n", " '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'\n", "}\n", "base_url='https://www.lottery.gov.cn/kjpls/{}.html'\n", "data=[]\n", "#改变range值控制url数量\n", "for i in range(14233,14445):\n", " new_url=base_url.format(i)\n", "\n", "#获取数据并且整合\n", "\n", " r=requests.get(new_url,headers=header)\n", " r.encoding=r.apparent_encoding\n", " date=re.findall(r'期于(.+?)开奖',r.text)[0]\n", " if re.findall(r'投注总额(.+?) 元。',r.text) == []: #判断缺失值\n", " amount=-1\n", " else :\n", " amount=re.findall(r'投注总额(.+?) 元。',r.text)[0]\n", " \n", " \n", " result=re.findall(r'开奖结果: (.+?)<.+?>',r.text)[0]\n", " data.append(\n", " #date帮你改成了时间格式\n", " [date,amount,result]\n", " )\n", "#爬取多个网站的时候可以设置延迟,或者加个if判断每爬几个网站暂停一段时间\n", " if i%7==0:\n", " print(i)\n", " time.sleep(3)\n", " elif i%2==0:\n", " time.sleep(2)\n", " \n", " \n", "\n", "#date[:4]+date[6:8]+date[10:12]" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "14444" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "i" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "#保存数据\n", "title=['date','amount','result']\n", "df=pd.DataFrame(data,columns=title).set_index('date')\n", "df.to_csv('data14233--14445-1--na.csv')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "df=pd.read_csv('data14233--14445-1--na.csv',parse_dates=['date'])" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", " | date | \n", "amount | \n", "result | \n", "
---|---|---|---|
0 | \n", "2014 年01 月14 日 | \n", "-1 | \n", "5 3 5 | \n", "
1 | \n", "2014 年01 月15 日 | \n", "17,874,118 | \n", "1 7 5 | \n", "
2 | \n", "2014 年01 月16 日 | \n", "-1 | \n", "9 8 2 | \n", "
3 | \n", "2014 年01 月17 日 | \n", "-1 | \n", "0 7 1 | \n", "
4 | \n", "2014 年01 月18 日 | \n", "-1 | \n", "0 2 1 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "
197 | \n", "2014 年08 月07 日 | \n", "14,826,202 | \n", "2 0 5 | \n", "
198 | \n", "2014 年08 月08 日 | \n", "15,116,914 | \n", "0 5 6 | \n", "
199 | \n", "2014 年08 月09 日 | \n", "14,274,666 | \n", "7 7 5 | \n", "
200 | \n", "2014 年08 月10 日 | \n", "14,198,140 | \n", "2 1 4 | \n", "
201 | \n", "2014 年08 月11 日 | \n", "15,260,976 | \n", "6 0 9 | \n", "
202 rows × 3 columns
\n", "