多线程爬取页面图片

详细见代码,在代码段有相应注释:

from multiprocessing import Pool
import requests
import re
import random

class dImg():
    def __init__(self):
        self.count = 0
        pass

    def run(self):
        self.userSearch = input(‘请输入你想要下载的图片:‘)
        self.userNum = int(input(‘你想要下载多少页面图片:‘))
        self.download()

    def processRun(self):
        self.userSearch = input(‘请输入你想要下载的图片:‘)
        self.userNum = int(input(‘你想要下载多少页面图片:‘))
        self.multiDownPage()

    def download(self):
        for item in range(self.userNum):
            self.downloadPage(item)

    def downloadPage(self, item):
        item = item + 1
        res = requests.get(‘https://pixabay.com/zh/photos/?q={}&pagi={}‘.format(self.userSearch, item))
        # (http.*?)表示获取以http开头的字符串
        pattern = re.compile(‘<div class="item".*?<img.*?src="(http.*?)".*?title="(.*?)">‘, re.S)
        result = re.findall(pattern, res.text)
        print(res.text)
        for item in result:
            # 请求相应链接的具体图片并保存到本地
            imgContent = requests.get(item[0])
            # 图片名随机数生成,保存图片要用二进制形式保存所有此处为wb
            # imgContent.content为请求到的图片内容
            ranNum = random.randint(0, 100000000)
            with open(‘./image/{}.jpg‘.format(ranNum), ‘wb‘) as f:
                f.write(imgContent.content)
                print(‘已下载完:%s图‘ % ranNum)
                self.count = self.count + 1

    def multiDownPage(self):
        # 设置的进程数和输入下载页数一样
        p = Pool(self.userNum)
        # 在进程数为p下,非柱塞的一一执行self.userNum页数的任务
        for i in range(self.userNum):
            # 参数args=(i,)为一个元组,所以后面的逗号必须有,表示页数
            p.apply_async(self.downloadPage, args=(i,))
        p.close()
        # 暂停进程,即设置进程的间隔时间
        p.join()
        print(‘所有图片下载完毕‘)

if __name__ == ‘__main__‘:
    # 实例化类,并调用其主函数
    a = dImg()
    # a.run()
    a.processRun()

原文地址:https://www.cnblogs.com/Dark-fire-liehuo/p/9757130.html

时间: 2024-08-29 05:11:19

多线程爬取页面图片的相关文章

python3爬取女神图片,破解盗链问题

title: python3爬取女神图片,破解盗链问题 date: 2018-04-22 08:26:00 tags: [python3,美女,图片抓取,爬虫, 盗链] comments: true 前言 其实,抓取图片和抓取小说内容没有任何本质的区别,步骤都是一样的. 但是图片读取的时候,会遇到一个盗链问题.这个问题是花的解决时间最长的. 环境 语言: python3 操作系统: mac 10.12.16 自定义工具包:soup_tool 其依赖工具如下: from urllib import

Python爬虫入门教程: All IT eBooks多线程爬取

All IT eBooks多线程爬取-写在前面 对一个爬虫爱好者来说,或多或少都有这么一点点的收集癖 ~ 发现好的图片,发现好的书籍,发现各种能存放在电脑上的东西,都喜欢把它批量的爬取下来. 然后放着,是的,就这么放着.......然后慢慢的遗忘掉..... All IT eBooks多线程爬取-爬虫分析 打开网址 http://www.allitebooks.com/ 发现特别清晰的小页面,一看就好爬 在点击一本图书进入,发现下载的小链接也很明显的展示在了我们面前,小激动一把,这么清晰无广告的

一个咸鱼的Python爬虫之路(三):爬取网页图片

学完Requests库与Beautifulsoup库我们今天来实战一波,爬取网页图片.依照现在所学只能爬取图片在html页面的而不能爬取由JavaScript生成的图.所以我找了这个网站http://www.ivsky.com 网站里面有很多的图集,我们就找你的名字这个图集来爬取 http://www.ivsky.com/bizhi/yourname_v39947/ 来看看这个页面的源代码: 可以看到我们想抓取的图片信息在<li> 里面然后图片地址在img里面那么我们这里可以用Beautifu

Scrapy爬取美女图片续集 (原创)

上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用. 在学习Scrapy官方文档的过程中,发现Scrapy自身实现了图片和文件的下载功能,不需要咱们之前自己实现图片的下载(不过原理都一样). 在官方文档中,我们可以看到下面一些话:Scrapy为下载item中包含的文件(比如在爬取到产品时,同时也想保存对应的图片)提供了一个可重用的 item pipelines .

多线程爬取百度百科

前言:EVERNOTE里的一篇笔记,我用了三个博客才学完...真的很菜...百度百科和故事网并没有太过不一样,修改下编码,debug下,就可以爬下来了,不过应该是我爬的东西太初级了,而且我爬到3000多条链接时,好像被拒绝了...爬取速度也很慢,估计之后要接触一些优化或者多进程,毕竟python是假的多线程.本博客参照代码及PROJECT来源:http://kexue.fm/archives/4385/ 源代码: 1 #! -*- coding:utf-8 -*- 2 import reques

一个简单的网络爬虫-从网上爬取美女图片

CrawlerPicture.java 文件 package com.lym.crawlerDemo; import java.io.DataInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import

爬取动态图片—以百度图片为例

一:何谓动态加载图片 所谓动态加载图片即指html刚加载时,图片时没有的,然后通过json发生有关图片的数据,在插入到html里面去,以到底快速打开网页的目的,那么问题来了?我们如何找到加载文件的json文件呢?而这个问题正是我们实现爬取百度图片的第一步,让小可爱告诉你怎么做吧. 我们以表情包这个关键字为例,如下图 小可爱在百度图片搜索表情包来到上图页面,然后按F12来到开发者页面, 我们点击二个json文件 如: ①https://image.baidu.com/search/acjson?t

实现多线程爬取数据并保存到mongodb

多线程爬取二手房网页并将数据保存到mongodb的代码: import pymongo import threading import time from lxml import etree import requests from queue import Queue index_url='https://m.lianjia.com/gz/ershoufang/pg{}/' detail_url='https://m.lianjia.com{}' # 设置爬取主页的页数 INDEX_PAGE_

多线程爬取小说时如何保证章节的顺序

前言 爬取小说时,以每一个章节为一个线程进行爬取,如果不加以控制的话,保存的时候各个章节之间的顺序会乱掉. 当然,这里说的是一本小说保存为单个txt文件,如果以每个章节为一个txt文件,自然不会存在这种情况. 不仅仅是小说,一些其他的数据在多线程爬取时也有类似情况,比如: 漫画:漫画其实是由大量图片组成,一般一本漫画会保存为一个pdf文件,在此过程要保证图片的顺序. 视频:现在网络上的视频大部分是由多个ts文件拼合,最后保存为一个mp4文件,要保证ts文件的顺序. 它们都有一个共同的特点,那就是