练手代码,聊作备忘:

# 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

python: 爬取[博海拾贝]图片脚本相关推荐

  1. Python 爬取陈都灵百度图片

    Python 爬取陈都灵百度图片 标签(空格分隔): 随笔 今天意外发现了自己以前写的一篇爬虫脚本,爬取的是我的女神陈都灵,尝试运行了一下发现居然还能用.故把脚本贴出来分享一下. import req ...

  2. python爬取帖吧图片实验报告,Python爬取百度贴吧图片

    原标题:Python爬取百度贴吧图片 作者:MTbaby 来源:http://blog.csdn.net/mtbaby/article/details/70209729 描述:用Python爬去百度贴 ...

  3. python爬取图片-Python爬取网页中的图片(搜狗图片)详解

    前言 最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: Python 3.6官网下载 本地下载 我们这里以sogou作为爬取的对象. 首先 ...

  4. 用Python爬取彼岸图网图片

     用Python爬取彼岸图网图片 *使用了  四个模块 import time import requests from lxml import etree import os 没有的话自行百度安装. ...

  5. python如何爬取网页视频_快就完事了!10分钟用python爬取网站视频和图片

    原标题:快就完事了!10分钟用python爬取网站视频和图片 话不多说,直接开讲!教你如何用Python爬虫爬取各大网站视频和图片. 638855753 网站分析: 我们点视频按钮,可以看到的链接是: ...

  6. Python爬取国家地理杂志的图片

    一.简介:Python爬取国家地理杂志的图片 二.代码展示 from bs4 import BeautifulSoup import requests import osos.mkdir('./img ...

  7. Python爬取 | 唯美女生图片

    这里只是代码展示,且复制后不能直接运行,需要配置一些设置才行,具体请查看下方链接介绍: Python爬取 | 唯美女生图片 from selenium import webdriver from fa ...

  8. 利用python爬取qq个性网图片

    利用python爬取qq个性网图片 网站头像布局大同小异,稍改代码即可爬取想要的头像. 不多bb,上代码. import requests from parsel import Selector im ...

  9. python爬取街拍美女图片

    python爬取街拍美女图片 完整代码: import requests from urllib.parse import urlencode import os from hashlib impor ...

最新文章

  1. No loop matching the specified signature and casting
  2. ie设置ActiveX控件不提示
  3. 【每天一个linux命令】read
  4. Matlab多项式回归实现
  5. MiniGUI+qvfb+Eclipse完成嵌入式系统图形开发(开发环境的搭建)
  6. mysql galera 下载_Mysql-Galera Cluster
  7. CSS学习笔记(更新中...)
  8. SLAM Cartographer(7)地图构建器
  9. 计算机新建用户会不会速度快,创建帐户让电脑系统速度比重装还快
  10. 记录——《C Primer Plus (第五版)》第七章编程练习第十一题
  11. 博为峰Java技术文章 ——JavaSE Swing JInternalFrame内部窗体面板II
  12. 带本科生做毕设是什么样的体验,看看学生是怎么评价我的
  13. 关于字符集的测试报告(转)
  14. C++ 16进制日志输出 每行右侧ASII输出
  15. 图书管理系统项目导入
  16. 电源管理芯片的电路结构与分析
  17. 计算机二级MS-office题目练习
  18. JAVA理论基础题库_干货|JAVA基础题库
  19. 储存过程的优点?缺点?
  20. 【C语言】之实现闰年判断

热门文章

  1. .Net Core3 新特性整理
  2. @RequestMapping
  3. ubuntu下crontab启动,重启,关闭命令
  4. Python排序算法之快速排序
  5. 一致性哈希算法原理分析及实现
  6. _编程语言_C++_Lambda函数与表达式
  7. 夺命雷公狗---无限级分类NO3
  8. hdu 4267 多维树状数组
  9. python 中的三元表达式(三目运算符)
  10. vs2008下设置.h, .lib和 .dll 的路径配置全图及其意义