python: 爬取[博海拾贝]图片脚本

练手代码,聊作备忘:

# encoding: utf-8
# from __future__ import unicode_literalsimport urllib
import urllib2
import re
import os
import time
from threading import Threadclass BhsbSpider(object):_url = r'https://bh.sb/post/category/main/';_page_count = 0_page_index = 0def __init__(self, url, page_count = 0):self._url = urlself._page_count = page_countfolder = '博海拾贝'.decode('utf-8')if not os.path.exists(folder):os.mkdir(folder)def spider(self):while self._page_index < self._page_count:self._page_index += 1self._url = r'https://bh.sb/post/category/main/page/%d' % self._page_indexself.do_spider(self._url)def do_spider(self, url):html = self.get_html(url)pattern = r'(?s)<h2><a\s+href="(?P<url>[^"]+).*?>\[博海拾贝\d+\](?P<title>[^<]+).*?'for i, m in enumerate(re.findall(pattern, html)):info = '%d. url: %s, title: %s' % ((self._page_index - 1) * 20 + i + 1, m[0], m[1])print info# 多线程爬取页面Thread(target=self.download, args=(m[0], m[1])).start()time.sleep(2)def download(self, url, title):title = '博海拾贝\\' + titletitle = title.decode('utf-8')if not os.path.exists(title):os.mkdir(title)html = self.get_html(url)pattern = r'(?s)<p>(?P<title>[^<]+).*?<p><img\s+src="(?P<image>[^"]+)"'for i, m in enumerate(re.findall(pattern, html)):img_title = m[0]img_url = m[1]img_filename = '%s/%s%s' % (title.encode('utf-8'), img_title, os.path.splitext(img_url)[1])img_filename = img_filename.decode('utf-8')print 'download %s ...' % img_filenameif not os.path.exists(img_filename):Thread(target=urllib.urlretrieve, args=(img_url, img_filename)).start()time.sleep(1)def get_html(self, url):try:url = url.encode('utf-8')req = urllib2.Request(url)req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.9.5.1000 Chrome/39.0.2146.0 Safari/537.36')page = urllib2.urlopen(req)return page.read()except Exception as ex:print 'get url_%s html error, ex=%s' % (url, ex)if __name__ == '__main__':url = r'https://bh.sb/post/category/main/'bs = BhsbSpider(url, 10)bs.spider()

 

未及细测试,其间有图片丢失情况。结果如下图示:

转载于:https://www.cnblogs.com/crwy/p/10623378.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java八岁生日快乐!

这是另外一段漫长的旅程&#xff0c;但是昨天&#xff0c;恰好是Java 7发布两年零七个月零十八天之后&#xff0c;我们现在有了可用于生产的构建 Java 8可供下载 &#xff01; 这个新的主要版本包含一些新功能和增强功能&#xff0c;这些功能和增强功能可以提高现有应用程序的…

精心挑选的23款美轮美奂的 jQuery 图片特效插件

jQuery是一个非常优秀的 JavaScript 框架&#xff0c;使用简单灵活&#xff0c;同时还有许多成熟的插件可供选择。其中&#xff0c;jQuery 最令人印象深刻的应用之一就是对图片的处理&#xff0c;它可以让帮助你在你的项目中加入各种精美的图片展示效果。下面向大家分享精心挑选…

arduino定时器函数如何使用_excel如何使用函数公式来查找图片

先看效果&#xff1a;是不是有点意思啊。好&#xff0c;咱们看看如何实现这样的效果。步骤一&#xff1a;准备好图片资料&#xff0c;话说巧媳妇难做无米之炊&#xff0c;没有资料&#xff0c;如何查询&#xff1f;如下图所示&#xff1a;A列是产品名称&#xff0c;B列是对应的…

精美的手机界面设计素材和线框图设计工具推荐

在制作界面原型的时候&#xff0c;如果有现成的界面基础元素可以使用的话&#xff0c;设计师就可以非常快速的完成原型的制作&#xff0c;能够节省大量的时间和精力。在这篇文章&#xff0c;我向大家分享45套非常有用的 UI 和 Wireframe 套件素材包&#xff0c;帮助设计们用于 …

c语言求数列的和_例15:C语言求Fibonacci数列的前30个数

例15&#xff1a;求Fibonacci数列的前30个数。这个数列有以下特点&#xff1a;第1,2两个数为1,1,。从第三个数开始&#xff0c;该数是其前两个数之和。&#xff08;斐波那契不死神兔&#xff09;解题思路&#xff1a;从前两个月的兔子数可以推出第3个月的兔子数。设第1个月的兔…

哈工大未来计算机院士,中国双一流大学拥有院士校友数排名,这是真实力!哈工大依然很强...

原标题&#xff1a;中国双一流大学拥有院士校友数排名&#xff0c;这是真实力&#xff01;哈工大依然很强校友是一个神奇的资源&#xff0c;就是曾经在同一个学校、大学、研究院(所)进行学习、工作和进修的人&#xff0c;就称为校友&#xff0c;以学校为标准&#xff0c;并不以…

GT sport赛道详解 - Dragon Trail | 龙之径

参考&#xff1a;GT sport所有赛道简介 今天的心情变化挺大&#xff0c;从绝望放弃到豁然开朗。 前言&#xff1a;GT sport有个排位赛&#xff0c;是每位sim赛车手提升自己等级的唯一途径&#xff0c;其中一个排位赛就是龙之径II&#xff08;逆时针跑&#xff09;&#xff0c;我…

优秀网页设计:带给你灵感的联系页面设计

在设计网站的时候&#xff0c;我们需要考虑到各个方面&#xff0c;从页眉到脚&#xff0c;从着陆页&#xff08;landing page&#xff09;到关于页&#xff08;about us page&#xff09;&#xff0c;还有联系页面&#xff08;contact page&#xff09;都要考虑。联系页面是网站…

前端项目难点及解决方法_预埋件施工重点难点的解决方法

点击箭头处“蓝色字”&#xff0c;关注我们哦&#xff01;&#xff01;关于施工重难点的问题&#xff0c;可根据主体结构施工情况&#xff0c;想从根本上解决几大重难点&#xff0c;必须严格按照设计图纸及规范要求放线定位&#xff0c;将预埋件施工精度控制合格率&#xff0c;…

视差滚动(Parallax Scrolling)技术在网页中应用的精美案例

视差滚动&#xff08;Parallax Scrolling&#xff09;是一种独特的网页内容表现形式&#xff0c;其基本原理是让多层背景以不同的速度移动&#xff0c;形成立体的运动效果&#xff0c;带来出色的视觉体验。作为今年网页设计的热点趋势&#xff0c;越来越多的网站应用了这项技术…

用Java可外部化

在理解Externalizable接口之前&#xff0c;您需要了解序列化。您可以在java中的序列化上阅读有关序列化的更多信息。 Java提供一种称为序列化的机制&#xff0c;以按字节顺序或字节顺序持久化Java对象&#xff0c;其中包括对象的数据以及有关对象的类型和存储在对象中的数据类…

批量删除html网页,批量删除.html · panghuamama/Clearly Local - Gitee.com

&#xfeff;批量删除$axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; };$axure.utils.getOtherPath function() { return resources/Other.html; };$axure.utils.getReloadPath function() { return resources/reload.html; };…

推荐30个新鲜出炉的精美 jQuery 效果

jQuery 是最流行和使用最广泛的 JavaScript 框架&#xff0c;它简化了HTML文档遍历&#xff0c;事件处理&#xff0c;动画以及Ajax交互&#xff0c;帮助Web开发人员更快速的实现各种精美的界面效果。jQuery 的易扩展性吸引了来自全球的开发者来共同编写 jQuery 插件&#xff0c…

会计专业计算机技能大赛,会计技能大赛策划

会计技能大赛策划一&#xff0e;活动背景会计是一个基于理论和实践相结合的学科&#xff0c;对于经管学院&#xff0c;会计专业是一个新创建的专业&#xff0c;缺少相应的会计实践。作为会计专业的学生&#xff0c;在不断学习理论的同时&#xff0c;我们更应该加强实践操作能力…

vue自定义指令clickoutside扩展--多个元素的并集作为inside

都是个人理解&#xff0c;如果发现错误&#xff0c;恳请大家批评指正&#xff0c;谢谢。还有我说的会比较啰嗦&#xff0c;因为是以自身菜鸡水平的视角来记录学习理解的过程&#xff0c;见谅。 1.前言 产品使用vueelement作为前端框架。在功能开发过程中&#xff0c;难免遇到使…

35个让人惊讶的 CSS3 动画效果演示

本文收集了35个惊人的 CSS3 动画演示&#xff0c;它们将证明 CSS3 Transform 和 Transition 属性的强大能力。CSS 是网页设计非常重要的一部分&#xff0c;随着越来越多的浏览器对 CSS3 支持的不断完善&#xff0c;设计师和开发者们有了更多的选择。如今&#xff0c;用纯 CSS 就…

计算机社团活动丰富多彩,描写社团丰富多彩的句子

我们学校的社团活动真是丰富多彩用这个句子开头试着写一段话感恩生命&#xff0c;感谢她给予我们丰富的感情。喜怒哀乐&#xff0c;悲思忧惧&#xff0c;洒洒脱脱&#xff0c;原原本本&#xff0c;痛快淋漓&#xff0c;无拘无束&#xff1b;喜而笑&#xff0c;怒而吼&#xff0…

宝元系统u盘使用说明_教你如何使用U盘安装电脑系统

①到老毛桃官网首页下载老毛桃UEFI版u盘启动盘制作工具安装到电脑上&#xff1b;②准备一个容量在4G以上并能够正常使用的u盘。1第一步将u盘插入电脑usb接口&#xff0c;程序会自动扫描&#xff0c;我们只需在下拉列表中选择用于制作的u盘&#xff0c;然后点击“一键制作”按钮…

支持在iPad中播放的HTML5视频网站推荐

YouTube是最早支持HTML5视频的网站&#xff0c;随着iPad等平板电脑的流行&#xff0c;越来越多的视频网站开始支持HTML5视频播放。下面就向大家分享一些国内的HTML5视频网站&#xff0c;是根据网上信息整理而成&#xff0c;欢迎大家反馈和推荐更多的HTML5视频网站。 腾讯 优酷…

为什么用链路聚合_H3C ComwareV7平台网络设备可靠性配置——链路聚合

H3C ComwareV7平台网络设备可靠性配置——链路聚合链路聚合简介&#xff1a;链路聚合是通过多个物理接口(通常指以太网接口&#xff0c;串口只在特定场景且与以太网聚合技术等同故不再赘述)捆绑实现的逻辑接口&#xff0c;而这些被捆绑在一起的以太网接口就称为该聚合组的成员端…