Hadoop权威指南第四版数据下载


补2: 最近学了多线程编程, 再来一看这个代码, 感觉心情非常的不美好, 这都写的什么垃圾…能用就行能用就行


补:
hhh, 原来在hadoop权威指南上的是可以找到数据的,就当这个代码就当一乐吧


起因

今天买了本《Hadoop权威指南》的PDF资料。原谅我,等我有钱长大一定买正版。因为不是正版所以没有各种的资料,比如说第二章的数据。因为我比较穷爱搞事情,加上上个学期才上完爬虫课。因此写了个脚本把资料下好啦(2019)年的。
ok不废话,代码贴出来

单线程

import requests
import re
import os
from urllib import requestclass Downloader(object):header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.418\3.83 Safari/537.36","Referer": "https://www1.ncdc.noaa.gov/pub/data/noaa/"}folder_name = "C:\\Users\\123\\Desktop\\Hadoop配置文件\\hadoop\\data\\"number = 0  # 程序计数器url = "https://www1.ncdc.noaa.gov/pub/data/noaa/2019/"def getUrl(self, url):response = requests.get(url,  self.header)pattern = r"[0-9]{6}-[0-9]{5}-2019\.gz"return re.findall(pattern, response.text)def createFolder(self):if os.path.exists(self.folder_name):print("folder have already exist. skip")else:os.makedirs(self.folder_name)def createFilePath(self, name):return self.folder_name + namedef concat(self, suffix):return self.url + suffixdef downloadFile(self, url, file_path):try:request.urlretrieve(url, filename=file_path)self.number += 1print("download ok plus 1")except Exception as e:print("Error occurred when downloading file, error message:")print(e)def run(self):suffix_url_ls = self.getUrl(self.url)self.createFolder()for i in suffix_url_ls:url = self.concat(i)file_path = self.createFilePath(i)self.downloadFile(url, file_path)if __name__ == '__main__':downloader = Downloader()downloader.run()print(downloader.number)

这样下载当然是慢得不行啦(就算我只下2019年的也很慢,慢得抠脚),一方面因为是老美的网站,好像下载还得挂VPN,一方面是因为没有上多线程噻!就不写生产者消费者了,反正网址都保存在suffix_url_ls里面了,直接造几个对象,start就ok!(哈哈,实际上你看前面的代码也知道要用多线程啊)

多线程

from queue import Queue
import requests
import re
import os
from urllib import request
import threadingclass Producer(object):suffix_url_queue = Queue()header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.418\3.83 Safari/537.36","Referer": "https://www1.ncdc.noaa.gov/pub/data/noaa/"}url = "https://www1.ncdc.noaa.gov/pub/data/noaa/2019/"def getUrl(self):response = requests.get(self.url,  self.header)pattern = r"[0-9]{6}-[0-9]{5}-2019\.gz"for suffix in re.findall(pattern, response.text):self.suffix_url_queue.put(self.url + suffix)class Downloader(threading.Thread):def __init__(self, p):super().__init__()self.p = pfolder_name = "C:\\Users\\123\\Desktop\\Hadoop配置文件\\hadoop\\data\\data\\"number = 0  # 程序计数器def createFolder(self):if os.path.exists(self.folder_name):print("folder have already exist. skip")else:os.makedirs(self.folder_name)def createFilePath(self, name):return self.folder_name + namedef downloadFile(self, url, file_path):try:request.urlretrieve(url, filename=file_path)self.number += 1print("download ok plus 1")except Exception as e:print("Error occurred when downloading file, error message:")print(e)def run(self):self.createFolder()r = r"[0-9]{6}-[0-9]{5}-2019\.gz"while not self.p.suffix_url_queue.empty():url = self.p.suffix_url_queue.get()name = re.findall(r, url)[0]if name is not None:file_path = self.createFilePath(name)self.downloadFile(url, file_path)else:print("name is None")if __name__ == '__main__':  # 没有试过能不能运行,应该是可以的哈哈哈,producer = Producer()producer.getUrl()  # 在producer对象中,保存有生产者产生的url。其实不需要用到这个对象,而且无限长的队列是很占空间的,自己注意for i in range(10):Downloader(producer).start()

大功告成!,如果想要全部的数据,只需要简单的在生产者里面加上一个for循环就好啦,另外要下的快点可以多开几个线程,但是也别太多,等会别人把你的ip封了就不好了

Hadoop权威指南第四版数据下载代码相关推荐

  1. 【hadoop权威指南第四版】第六章MR的工作原理【笔记+代码】

    6.1 运行MR作业 工作原理 四大模块: 客户端,提交MR作业. jobtracker,协调作业的运行.jobtracker 是一个java应用程序,主类是Jobtracker. tasktrack ...

  2. 【hadoop权威指南第四版】第七章MR的类型与格式【笔记+代码】

    7.1MR类型 7.2 输入格式 7.2.1输入分片与记录 InputFormat类的层次结构 每一个map操作只处理一个输入分片,并且一个一个地处理每条记录,也就是一个键值对. 在数据库中,一个输入 ...

  3. 【hadoop权威指南第四版】第三章hadoop分布式文件系统【笔记+代码】

    3.1块 显示块信息 % hdfs fsck / -files -blocks 3.5 Java接口 3.5.1从hadoop URL读取数据 使用java.net.URL 对象来打开一个数据流 In ...

  4. 【hadoop权威指南第四版】第五章MR应用【笔记+代码】

    5.1 API的配置 配置文件 <?xml version="1.0"?> <configuration> <property> <nam ...

  5. 《JavaScript权威指南第四版》 电子版 电子书下载

    JavaScript权威指南第四版 图书评价:★★★★☆ 图书语言:简体图书 图书大小:19.11MB 图书格式:PDF 图书作者:David Flanagan 更新日期:2006-05-23 下载次 ...

  6. Hadoop权威指南(第3版) 修订版(带目录书签) 中文PDF--高清晰

    一.下载地址(永久有效) 百度云盘下载(公开永久):Hadoop权威指南(第3版) 修订版(带目录书签) 中文PDF高清晰 CSDN积分下载:Hadoop权威指南(第3版)+高清晰 二.数据的存储和分 ...

  7. hadoop权威指南第三版 发布说明

    (此文摘自http://hadoopbook.com) hadoop权威指南第三版发行说明: 第三版会在2012年5月发行.你现在可以预定一份电子版,或购买"Early Release&qu ...

  8. Hadoop权威指南(第二版)pdf中文版

    今天终于找到 hadoop权威指南第二版的中文pdf版本了,发给大家共享一下 下载地址:http://dl.dbank.com/c0hh1arjiz ------------------------- ...

  9. css权威指南第四版_16个非常有用的CSS伪选择器,你千万不要错过了!

    英文 | https://blog.bitsrc.io/css-pseudo-selectors-you-never-knew-existed-b5c0ddaa8116译文 | https://jue ...

  10. Hadoop权威指南(第三版)笔记——HDFS

    HDFS是Hadoop抽象的文件系统概念的一个实现. 适用场景 适用于大型商用机集群,流式数据访问模式来存储超大文件. 特征 1.超大文件. 2.流式数据访问.HDFS的构建思路是,一次写入,多次读取 ...

最新文章

  1. MXNet中x.grad源码追溯
  2. 雷军22年前写的代码 你见过吗?
  3. Mac os硬盘空间释放
  4. [转]Java 8:不要再用循环了
  5. SpringMVC工作原理之一:DispatcherServlet
  6. 蓝桥杯2016省赛真题-剪邮票(dfs)
  7. 作者:郭绍光(1985-),男,中国科学院上海天文台工程师
  8. 呷哺呷哺:预期2021年净亏损约2.75亿元至2.95亿元
  9. 全国首个园区型绿色能源网一年“减碳”上万吨
  10. web表格在css中属性,CSS属性之表格(Table)_html/css_WEB-ITnose
  11. 1.阿里云短信验证操作步骤
  12. 为什么像王者荣耀这样的游戏Server不愿意使用微服务??
  13. 微信类APP如何架构才能省流量
  14. 数据分析--优化模型
  15. 美区id无法登陆解决方法
  16. 如何高效学习,斯科特·扬(全文)
  17. 教你如何购买阿里云香港服务器(教程)
  18. 手写原笔迹输入_原笔迹真实展现 E人E本 M1手写功能体验
  19. 操作系统发展趋势分析,以及对开发者的影响。
  20. rk3566 HDMI 热插拔HDMI显示无信号

热门文章

  1. 基于TensorFlow的深度学习 揭示数据隐含的奥秘3 卷积神经网络
  2. Microsoft SQL Server 2008 R2出现索引超出数组界限
  3. 基于python的图书管理系统设计与实现论文_图书管理系统的设计与实现图书管理系统论文...
  4. 兰光bl2000_蓝光bl2000电梯主板.pdf
  5. x230无线网卡驱动服务器版,联想X230网卡驱动
  6. 软考数据库系统工程师第四版考点更新
  7. STM32固件库编成基础教程
  8. ENVI 5.3软件安装教程(附带安装包获取方式)
  9. vb access mysql数据库教程_VB操作access数据库
  10. I2C驱动12864液晶模块程序分享ARDUINO UNO