Python网页数据爬取(SSQ多页数据)

主要任务:利用Pandas将多页二维数据获取后,写入.csv或.xlsx文件中备用
任务地址:http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html
表格如下:
Python网页数据爬取(SSQ多页数据)_第1张图片

# 引用Python库
import time
import pandas as pd 
import csv 
url='http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'}
tb=pd.read_html(url)
tb

Python网页数据爬取(SSQ多页数据)_第2张图片
tb=pd.read_html(url) 改成tb=pd.read_html(url,skiprows=[0,1])则tb最上方的开奖日期就去掉了
Python网页数据爬取(SSQ多页数据)_第3张图片
如果换成tb=pd.read_html(url,skiprows=[0,1])[0],则得到的是以下图片:
Python网页数据爬取(SSQ多页数据)_第4张图片

tb[0]

Python网页数据爬取(SSQ多页数据)_第5张图片

import time
import pandas as pd 
import csv 
from urllib.parse import urlencode
import requests
# 利用函数封装进行SSQ的多页提取
def get_one_page(i):
    try:
        headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'}
#         paras={
#             'pageNum':i 
#         }
        url='http://kaijiang.zhcw.com/zhcw/html/ssq/list_'+str(i)+'.html'
        print(url)
        print("请耐心等待...")
        time.sleep(1)
        response=requests.get(url,headers=headers)
        if response.status_code==200: # 判断断点是否可以连接
            tb=pd.read_html(response.text,header=None)[0]
            return tb.drop([len(tb)-1]).replace()
        return None
    except ResourceWarning:
        print('爬取失败')

# 定义主函数,调用get_one_page
# 主函数
def main(page):
    for i in range(1,page):   # page表示提取页数
        if i==1:
            with open(r'ssqdata/page01.csv','w',newline="",encoding='utf-8-sig') as f:# newline=""防止产生空行
                pd.DataFrame([['开奖日期','期号','中奖号码','销售额(元)','中奖注数01','中奖注数02','详细']]).to_csv(f,index=False,header=False,mode="a")# 保存csv文件
                tb=get_one_page(i)
                pd.DataFrame(tb.values).to_csv(f,index=False,header=False,mode="a+")
                f.close()
        else:
            tb=get_one_page(i)
            with open(r'ssqdata/page05.csv','a+',newline="",encoding='utf-8') as f:
                pd.DataFrame(tb.values).to_csv(f,index=False,header=False,mode="a+")
                f.close()
    
            
# 单进程
if __name__ == '__main__':
    main(11)   #共提取n页

# # 多进程
# from multiprocessing import Pool
# if __name__=='__main__':
#     pool=Pool(4)
#     pool.map(main,[i for i in range(1,136)])
endtime=time.time()-()
print('程序运行了%.2f秒' %(time.time()-start_time))

运行结果:
Python网页数据爬取(SSQ多页数据)_第6张图片
找到生成的page05.csv数据:
在这里插入图片描述
Python网页数据爬取(SSQ多页数据)_第7张图片

你可能感兴趣的:(大数据分析,Phthon,python,开发语言,后端)