python环境:python3

运行环境:win10和linux都可以,其他系统没测

1 安装依赖

pip install requests
pip install lxml
pip install feedparser

2 创建一个新文件夹

3 运行该脚本

python mzitu.py

源码如下:

# -*- coding: UTF-8 –*-
import feedparser
import requests
from lxml import etree
import threading
import random
import os
 
def get_url():
 
    rss_url = 'https://www.mzitu.com/feed/'
    feeds = feedparser.parse(rss_url)
 
    page_url = []
    for i in range(20):
        page_url.append(feeds.entries[i]['link'])
 
    return page_url
 
def download(dirname, imgurl):
 
    headers = {
    'referer':'https://www.mzitu.com/',
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
    }
 
    filename = imgurl.split('/')[-1]
 
    r = requests.get(imgurl, headers = headers, stream=True)
    if os.path.exists(dirname):
        with open(dirname + '/' + filename, 'wb') as f:
            for chunk in r.iter_content(chunk_size=32):
                f.write(chunk)
            print('下载:%s中' % filename)
    else:
        os.mkdir(dirname)
        with open(dirname + '/' + filename, 'wb') as f:
            for chunk in r.iter_content(chunk_size=32):
                f.write(chunk)
            print('下载:%s中' % filename)
 
def get_img(url):
 
    r = requests.get(url)
    page = etree.HTML(r.text)
    span = page.xpath('/html/body/div[2]/div[1]/div[4]/a[5]/span')
    hs = page.xpath('//h2[@class="main-title"]')
    for h in hs:
        title = h.text
    for a in span:
        pages = a.text
    try:
        for i in range(int(pages)+1):
            if i == 1:
                pass
            else:
                imgpage = url + '/' + str(i)
                r1 = requests.get(imgpage)
                page1 = etree.HTML(r1.text)
                x_href = page1.xpath('/html/body/div[2]/div[1]/div[3]/p/a/img')
                for href in x_href:
                    imgurl = href.get('src')
                    download(title, imgurl)
    except KeyboardInterrupt:
        pass
    except:
        pass
 
def main():
 
    urls = get_url()
    threads=[]
    for i in range(len(urls)):
        t = threading.Thread(target=get_img, args=(urls[0+i],))
        threads.append(t)
 
    for i in threads:
        i.start()
 
    for i in threads:
        i.join()
 
if __name__ == '__main__':
    main()

如果遇到问题,源码请到百度网盘下载;百度网盘   提取码:7pv8

4 升级版(可下载所有组图)

源码如下:

# -*- coding: UTF-8 鈥?-
import feedparser
import requests
from lxml import etree
import threading
import random
import os def get_url2():
rss_url = 'https://www.mzitu.com/all/'
r = requests.get(rss_url)
page = etree.HTML(r.text)
result =page.xpath('/html/body/div[2]/div[1]/div[2]/ul/li/p[2]/a')
print('鏈?d缁勫浘'%len(result))
page_url = []
for x in result:
page_url.append(x.get('href'))
#print(x.get('href'))
return page_url def download(dirname, imgurl): headers = {
'referer':'https://www.mzitu.com/',
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
} filename = imgurl.split('/')[-1] r = requests.get(imgurl, headers = headers, stream=True)
if os.path.exists(dirname):
with open(dirname + '/' + filename, 'wb') as f:
for chunk in r.iter_content(chunk_size=32):
f.write(chunk)
print('涓嬭浇:%s涓? % filename)
else:
os.mkdir(dirname)
with open(dirname + '/' + filename, 'wb') as f:
for chunk in r.iter_content(chunk_size=32):
f.write(chunk)
print('涓嬭浇:%s涓? % filename) def get_img(url): r = requests.get(url)
page = etree.HTML(r.text)
span = page.xpath('/html/body/div[2]/div[1]/div[4]/a[5]/span')
hs = page.xpath('//h2[@class="main-title"]')
for h in hs:
title = h.text
for a in span:
pages = a.text
try:
for i in range(int(pages)+1):
if i == 1:
pass
else:
imgpage = url + '/' + str(i)
r1 = requests.get(imgpage)
page1 = etree.HTML(r1.text)
x_href = page1.xpath('/html/body/div[2]/div[1]/div[3]/p/a/img')
for href in x_href:
imgurl = href.get('src')
download(title, imgurl)
except KeyboardInterrupt:
pass
except:
pass def main(): urls = get_url2()
threads=[]
for i in range(len(urls)):
t = threading.Thread(target=get_img, args=(urls[0+i],))
threads.append(t) for i in threads:
i.start() for i in threads:
i.join() if __name__ == '__main__':
main()

如果遇到问题,源码请到百度网盘下载;百度网盘  提取码:nxoo

注意:经测试,4 升级版在运行时,会大量占用内存,内存小的电脑估计抗不住。。

Python3多线程爬取meizitu的图片的更多相关文章

  1. Python3 多线程爬取梨视频

    多线程爬取梨视频 from threading import Thread import requests import re # 访问链接 def access_page(url): respons ...

  2. python3 urllib爬取wallhalla网站图片

    点我去我的github上看源码 简单使用静态方法爬取https://wallhalla.com/网站的图片 参考: https://blog.csdn.net/cquptcmj/article/det ...

  3. Python3 urllib 爬取 花瓣网图片

    点我去我的github上看源码 **花瓣网是动态的,所以要抓包分析,,但我真的累的不行,不想写教程了,我源码里有注释

  4. python 爬虫入门----案例爬取上海租房图片

    前言 对于一个net开发这爬虫真真的以前没有写过.这段时间学习python爬虫,今天周末无聊写了一段代码爬取上海租房图片,其实很简短就是利用爬虫的第三方库Requests与BeautifulSoup. ...

  5. Python3从零开始爬取今日头条的新闻【一、开发环境搭建】

    Python3从零开始爬取今日头条的新闻[一.开发环境搭建] Python3从零开始爬取今日头条的新闻[二.首页热点新闻抓取] Python3从零开始爬取今日头条的新闻[三.滚动到底自动加载] Pyt ...

  6. Python爬虫入门教程 14-100 All IT eBooks多线程爬取

    All IT eBooks多线程爬取-写在前面 对一个爬虫爱好者来说,或多或少都有这么一点点的收集癖 ~ 发现好的图片,发现好的书籍,发现各种能存放在电脑上的东西,都喜欢把它批量的爬取下来. 然后放着 ...

  7. Python爬虫入门教程 13-100 斗图啦表情包多线程爬取

    斗图啦表情包多线程爬取-写在前面 今天在CSDN博客,发现好多人写爬虫都在爬取一个叫做斗图啦的网站,里面很多表情包,然后瞅了瞅,各种实现方式都有,今天我给你实现一个多线程版本的.关键技术点 aioht ...

  8. Python3从零开始爬取今日头条的新闻【四、模拟点击切换tab标签获取内容】

    Python3从零开始爬取今日头条的新闻[一.开发环境搭建] Python3从零开始爬取今日头条的新闻[二.首页热点新闻抓取] Python3从零开始爬取今日头条的新闻[三.滚动到底自动加载] Pyt ...

  9. Python3从零开始爬取今日头条的新闻【三、滚动到底自动加载】

    Python3从零开始爬取今日头条的新闻[一.开发环境搭建] Python3从零开始爬取今日头条的新闻[二.首页热点新闻抓取] Python3从零开始爬取今日头条的新闻[三.滚动到底自动加载] Pyt ...

随机推荐

  1. Linux学习—redis安装配置及远程连接

    1.下载安装包并解压 进入文件夹/usr/local cd /usr/local 下载redis安装包: wget http://download.redis.io/releases/redis-.t ...

  2. V8的垃圾回收和内存限制

    V8的垃圾回收和内存限制 前言 在第三次浏览器大战中,来自Google的Chrome浏览器凭借优异的性能成为聚光灯下的焦点.而Chrome的成功离不开站在其背后的JavaScript引擎V8. 随着V ...

  3. Django组件-admin

    一. admin组件的使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INST ...

  4. Windows10和Windows Server 2019支持OpenSSH

    从 Win10 1809 和 Windows Server 2019 开始 Windows 开始支持 OpenSSH Server.本文介绍一下其基本的概念和配置方法,本文演示用的环境为 Win10 ...

  5. element UI实现动态生成多级表头

    一.效果图 二.封装两个组件,分别为DynamicTable.vue和TableColumn.vue,TableColumn.vue主要是使用递归来对表头进行循环生成 DynamicTable.vue ...

  6. Lua开发环境

    下载并解压Lua源码: wget http://www.lua.org/ftp/lua-5.1.5.tar.gz tar zxvf lua-5.1.5.tar.gz cd lua-5.1.5 打开Ma ...

  7. 生产环境Crontab专业实例

    1)书写Crontab定时任务多个基本要领 1.规范定时任务两例 例1:每分钟打印一次自己名字的全拼到 “/server/log/自己命名的文件” 中

  8. 腾讯云远程连接Kafka

    腾讯云服务器上部署Kafka,使用server.properties中公网IP配置: 启动时候报错: ERROR [KafkaServer id=0] Fatal error during Kafka ...

  9. 外边距margin的叠加问题

    下午在看<css禅意花园>,书中提到了外边距重叠,于是去网上搜索了一下资料. 写了一个小例子做测试.发现网上的有些总结与我的测试不符,索性就自己总结了╮(╯▽╰)╭ <!DOCTYP ...

  10. Response.write()弹出窗口的问题!

    今天偶然发现在.NET中使用Javascript语句弹出窗口时发现一个小小的问题! 例子如下: 1: Response.Write ("<script languge=javascri ...