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. 【转载】用jquery给select option 赋值

    var dataList = [ "6211125886667895", "6211125886667892", "6211125886667897& ...

  2. 关于LINQ中SELECT NEW 的问题

    public static object SelectAnyInfo(){    DataAccessContext context = new DataAccessContext();    var ...

  3. bash-2 httpd服务的源码编译安装脚本

    httpd服务的源码编译安装脚本 #!/bin/bash # #******************************************************************** ...

  4. QT下过多点的曲线绘制

    绘制过多点的曲线意义重大.但通过试验,QT的PainterPath不是很如意.当多段曲线围成一个区域时,PainterPath内并不包含该区域的所有面积,只包含曲线和其弦构成的面积. 为了解决这一问题 ...

  5. Sql 语句收集——行转列

    SQL行转列汇总 PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in ...

  6. Java中简单测试FastDFS的文件上传

    pom.xml文件内容如下: <dependencies> <!-- fastdfs --> <dependency> <groupId>org.cso ...

  7. linux下selenium+phantomjs环境

    # 安装依赖软件yum -y install wget fontconfig # 下载PhantomJSwget -P /tmp/ https://bitbucket.org/ariya/phanto ...

  8. CNN中卷积层 池化层反向传播

    参考:https://blog.csdn.net/kyang624823/article/details/78633897 卷积层 池化层反向传播: 1,CNN的前向传播 a)对于卷积层,卷积核与输入 ...

  9. k8s-部署及介绍

    Kubernetes主要功能:  数据卷 Pod中容器之间共享数据,可以使用数据卷.  应用程序健康检查 容器内服务可能进程堵塞无法处理请求,可以设置监控检查策略保证应用健壮性.  复制应用程序 ...

  10. 并不对劲的CF480E:Parking Lot

    题目大意 有一个\(n\times m\)的网格,每个位置是黑色或者白色.\(k\)个操作,每个操作是将一个白格子染黑,操作后输出当前最大的白色正方形的边长.\(n,m,k\leq 2\times 1 ...