【爬虫专栏17】多线程爬双色球
双色球
- 代码部分
- 单线程
- 多线程
网址:
http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html
应该还挺好抓的直接pandas
不啰嗦了,相信原理大部分应该都懂都有了
里面也有必要的注释
直接贴代码了
代码部分
单线程
import pandas as pd
import csv
import timedef get_one_page(page):url = 'http://kaijiang.zhcw.com/zhcw/html/ssq/list_%s.html' % (str(page))tb = pd.read_html(url, skiprows=[0, 1])[0] # 跳过前两行return tb.drop([len(tb)-1]) # 去掉最后一行with open(r'xxx', 'w', encoding='utf-8-sig', newline='') as f:csv.writer(f).writerow(['开奖日期', '期号', '中奖号码', '销售额(元)', '中奖注数一等奖', '中奖注数二等奖', '详细'])start_time = time.time()for i in range(1,127): # 目前126页数据,取20页get_one_page(i).to_csv(r'xxx', mode='a', encoding='utf_8_sig', header=0, index=0)print('第'+str(i)+'页抓取完成')end_time = time.time()
print('耗时:', end_time-start_time, '秒')
多线程
import random
import threading
import pandas as pd
from queue import Queue
import time
import csvurl = 'http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html' class Thread_crawl(threading.Thread):# 初始化def __init__(self, name, page_queue):threading.Thread.__init__(self)# 拿到任务队列self.page_queue = page_queueself.name = namedef run(self):# # 任务开始事件# start_time = time.time()while True:if self.page_queue.empty():# # 任务结束时间# end_time = time.time()# # 需要时间# print(end_time - start_time)breakelse:print(self.name, '将要从队列中取任务')#这里就是利用了队列的特性,抽取之后就行了,get抽了之后对应的页码就消失了,不然就会重复抽取了page = self.page_queue.get()print(self.name, '取出的任务是:', page)url = 'http://kaijiang.zhcw.com/zhcw/html/ssq/list_%s.html' % (str(page))self.get_content(url=url)print(self.name, '完成任务:', page)def get_content(self, url):headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6824.400 QQBrowser/10.3.3127.400'}tb = pd.read_html(url, skiprows=[0, 1])[0] # 跳过前两行data = tb.drop([len(tb)-1])data.to_csv(r'xxx', mode='a', encoding='utf_8_sig', header=0, index=0)with open(r'xxx', 'w', encoding='utf-8-sig', newline='') as f:csv.writer(f).writerow(['开奖日期', '期号', '中奖号码', '销售额(元)', '中奖注数一等奖', '中奖注数二等奖', '详细'])if __name__ == '__main__':# 任务开始事件start_time = time.time()# 创建队列任务page_queue = Queue()for page in range(1, 127):page_queue.put(page)# 2 生成线程#这里过于丧心病狂写了9个线程craw1_name = ['c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9']craw1_tread = []for name in craw1_name:crawl = Thread_crawl(name, page_queue)#start即调用run方法crawl.start()craw1_tread.append(crawl)##join 阻塞线程,让子线程都完成任务后,主线程再往下进行for thread in craw1_tread:thread.join()# 任务结束时间end_time = time.time()# 需要时间print(end_time - start_time)
代码应该直接就可以用,改改文件路径就行了
写入效果如下图所示
开奖日期,期号,中奖号码,销售额(元),中奖注数一等奖,中奖注数二等奖,详细
2019-05-23,2019059,04 05 07 09 16 18 06,345567246,2 (鄂 桂),125,
2019-05-21,2019058,07 08 12 21 23 27 12,339299672,20 (冀 黑 沪 苏..),127,
2019-05-19,2019057,04 05 06 08 13 18 16,372560948,7 (黑 沪 湘 深圳..),127,
2019-05-16,2019056,13 14 17 19 21 29 01,351267630,1 (赣),78,
2019-05-14,2019055,01 06 11 15 19 31 10,350070872,2 (豫 粤),61,
2019-05-12,2019054,07 10 11 15 24 26 11,376075414,8 (京 吉 鲁 鄂..),132,
2019-05-09,2019053,04 16 22 25 29 31 08,345533966,12 (蒙 沪 苏 鄂..),109,
2019-05-07,2019052,03 06 09 13 16 19 16,342251970,153 (京 津 冀 晋..),2295,
2019-05-05,2019051,08 09 10 13 15 28 09,371316762,13 (晋 蒙 吉 黑..),120,
2019-05-02,2019050,04 06 10 11 21 23 02,311858860,13 (辽 吉 沪 皖..),100,
2019-04-30,2019049,03 10 13 22 23 28 15,333775314,9 (京 津 黑 浙..),205,
2019-04-28,2019048,03 07 10 12 18 29 10,379210874,8 (冀 苏 湘 粤),153,
2019-04-25,2019047,03 11 18 25 30 33 14,349665886,1 (粤),388,
2019-04-23,2019046,02 12 16 22 25 32 06,349236650,17 (津 黑 沪 浙..),132,
2019-04-21,2019045,01 06 17 19 27 31 14,380577960,7 (辽 苏 粤 深圳..),83,
2019-04-18,2019044,06 14 16 17 23 29 07,350579948,12 (津 浙 皖 湘..),188,
2019-04-16,2019043,01 06 12 13 24 32 13,345296562,2 (鲁 鄂),99,
2019-04-14,2019042,15 17 19 22 25 26 04,376134240,4 (冀 晋 闽 鲁),132,
2019-08-25,2019099,07 14 22 23 27 30 08,355328056,26 (吉 黑 皖 赣..),185,
2019-08-22,2019098,03 11 12 14 17 26 09,334187522,4 (辽 黑 浙 湘),136,
2019-08-20,2019097,03 05 18 24 25 31 09,328319954,5 (辽 粤 陕 新),98,
2019-08-18,2019096,05 07 12 18 27 32 11,355103324,48 (冀 晋 辽 赣..),310,
2019-08-15,2019095,02 05 14 19 21 28 01,327102912,3 (辽 粤),95,
2019-08-13,2019094,05 10 12 18 19 27 06,318739184,8 (苏 浙 赣 粤..),301,
2019-08-11,2019093,05 07 08 09 20 22 02,343851622,27 (京 冀 蒙 辽..),629,
2019-08-08,2019092,09 17 27 28 32 33 08,325113036,6 (京 苏 浙 湘..),67,
2019-08-06,2019091,07 10 21 24 29 32 11,321773688,2 (深圳 渝),94,
2019-08-04,2019090,02 03 06 08 14 22 04,355808718,2 (辽 粤),93,
2019-08-01,2019089,02 04 14 16 20 22 11,321183320,7 (辽 皖 鄂 湘..),104,
2019-07-30,2019088,13 14 15 21 23 29 13,320442344,18 (黑 苏 浙 鲁..),77,
2019-07-28,2019087,04 05 07 09 21 30 04,348495228,5 (沪 皖),99,
也希望大家成功,我是夏友,谢谢大家!
【爬虫专栏17】多线程爬双色球相关推荐
- python爬虫实战之多线程爬取前程无忧简历
python爬虫实战之多线程爬取前程无忧简历 import requests import re import threading import time from queue import Queu ...
- python爬虫第二弹-多线程爬取网站歌曲
python爬虫第二弹-多线程爬取网站歌曲 一.简介 二.使用的环境 三.网页解析 1.获取网页的最大页数 2.获取每一页的url形式 3.获取每首歌曲的相关信息 4.获取下载的链接 四.代码实现 一 ...
- Python爬虫实战 | 利用多线程爬取 LOL 高清壁纸
来源:公众号[杰哥的IT之旅] 作者:阿拉斯加 ID:Jake_Internet 如需获取本文完整代码及 LOL 壁纸,请为本文右下角点赞并添加杰哥微信:Hc220088 获取. 一.背景介绍 随着移 ...
- python爬虫实例之——多线程爬取小说
之前写过一篇爬取小说的博客,但是单线程爬取速度太慢了,之前爬取一部小说花了700多秒,1秒两章的速度有点让人难以接受. 所以弄了个多线程的爬虫. 这次的思路和之前的不一样,之前是一章一章的爬,每爬一章 ...
- Python爬虫进阶之多线程爬取数据并保存到数据库
今天刚看完崔大佬的<python3网络爬虫开发实战>,顿时觉得自己有行了,准备用appium登录QQ爬取列表中好友信息,接踵而来的是一步一步的坑,前期配置无数出错,安装之后连接也是好多错误 ...
- 网络爬虫:使用多线程爬取网页链接
前言: 经过前面两篇文章,你想大家应该已经知道网络爬虫是怎么一回事了.这篇文章会在之前做过的事情上做一些改进,以及说明之前的做法的不足之处. 思路分析: 1.逻辑结构图 上图中展示的就是我们网络爬虫中 ...
- Java 爬虫简单实现多线程爬取视频
一 引言 什么是网络爬虫? 个人简单理解: 根据特定规则从指定web开放内容中抓取希望获取的数据,如视频,图片,小说等 官方权威解释(wiki): 网络爬虫(英语:),也叫网络蜘蛛(),是一种用来自动 ...
- python爬虫实例之小说爬取器
今天和大家分享一个爬取盗版小说的实例. 如今的网络小说可谓是百家齐放各领风骚,玄幻科幻穿越修仙都市- 各种套路看得我是心潮澎湃,笔者曾经也蛮喜欢看小说的,以前经常是拿着一台诺基亚看到深夜,第二天带着黑 ...
- python爬虫天天基金_不使用Python爬虫框架,多线程+代理池爬取天天基金网、股票数据...
提到爬虫,大部分人都会想到使用Scrapy工具,但是仅仅停留在会使用的阶段.为了增加对爬虫机制的理解,我们可以手动实现多线程的爬虫过程,同时,引入IP代理池进行基本的反爬操作. 本次使用天天基金网进行 ...
- python多线程爬取多个网址_【Python爬虫】多线程爬取斗图网站(皮皮虾,我们上车)...
原标题:[Python爬虫]多线程爬取斗图网站(皮皮虾,我们上车) 斗图我不怕 没有斗图库的程序猿是无助,每次在群里斗图都以惨败而告终,为了能让自己在斗图界立于不败之地,特意去网上爬取了斗图包.在这里 ...
最新文章
- ES6语法~解构赋值、箭头函数、class类继承及属性方法、map、set、symbol、rest、new.target、 Object.entries......
- “叽里呱啦”说英语,这家公司要用AI增值语言输出能力
- sqlserver锁机制详解(sqlserver查看锁)
- Apache2.2.8、php5.2.6、mysql5、phpMyAdmin2.11.6在Windows Vista下的安装和配置
- FreeBSD 创始人-Jordan Hubbard
- python动态规划详解_python----动态规划
- 服务器消息机制实现--记录
- apache poi excel显示 base64 图片_java操作Excel一:POI
- STM32F107 资料
- 英寸和厘米的换算python_OJ实例:厘米换算英尺英寸
- 领导给你安排任务,这三种话,越早说越好
- 证件照排版软件_傻瓜式证件照片排版以及尺寸的调整
- HTML 实现仿 Windows 桌面主题特效
- sybase日志空间不足,增加日志空间步骤(有图有真相)
- 树莓派强制更改root密码
- 【codeforces】【比赛题解】#960 CF Round #474 (Div. 1 + Div. 2, combined)
- 趋势一次一单EA,不加仓不网格,每单带止损止盈,风险可控
- 02 创建一个简单的Python Web程序应用
- 【每周研报复现】基于阻力支撑相对强度(RSRS)的市场择时
- 矩阵乘法为什么快怎么更快
热门文章
- php的laravel框架下载,Laravel(PHP开发框架)官方下载 5.4稳定版_Win10镜像官网
- 西刺代理python_手把手教你使用Python爬取西刺代理数据(下篇)
- myeclipse安装插件phpeclipse后进行PHP代码编写
- msf生成php木马,11.7 Weevely3生成网页木马、Backcookie后门生成工具、使用msf生成木马、一句话变形技巧和使用...
- C/C++ _beginthreadex 多线程操作 - 线程同步
- 计算机端最好用的词典——GoldenDict
- 脑电时频分析II:时频分析
- vb3计算机,2014年计算机二级考试VB试题 3
- 【入门必看-算法基础知识讲解】小白都也能看得懂
- 基于javaweb的客户信息管理系统搭建