meizitu-spider

python通用爬虫-绕过防盗链爬取妹子图

这是一只小巧方便,强大的爬虫,由python编写

所需的库有

    1. requests
    1. BeautifulSoup
    1. os
    1. lxml

伪装成chrome浏览器,并加上referer请求头访问服务器不会被拒绝。

完整项目放在GitHub:https://github.com/Ymy214/meizitu-spider

具体实现思路:

    1. 分析网页源代码结构
    1. 找到合适的入口
    1. 循环爬取并去重加到循环队列
    1. 基本上实现了爬取所有图片

代码思路/程序流程:

我通过观察发现meizitu网站的分布结构虽然找不到切入口但是其结构每一个页面都会展示一个main-image主图,并且页面下面都会有推荐这个板块,所以就i昂到了利用从一个页面当作入口,利用beautifulsoup或者pyquery分析HTML页面提取出推荐的其他页面,添加到循环访问队列,整体程序最外蹭利用while循环控制结构,循环不重复地遍历队列里面的url页面,每个页面都只保存一个作为展示的主图这样就循环下去程序不停歇地运行也可以放到服务器上面爬取,顺便上传到网盘分享给广大--你懂的

下面是功能以及效果展示

整体展示

爬取效果展示-丰功伟绩

爬取效果展示-硕果累累

定制请求头

代码展示

python源代码如下


#!/usr/bin/env python
# -*- encoding: utf-8 -*-
import requests
from bs4 import BeautifulSoup # 定制请求头
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.3679.0 Safari/537.36'} path = 'R:/python123全国等考/meizitu/'
meizi_url = []
meizitu_img = [] start_url = 'https://www.mzitu.com/177007'
meizi_url.append(start_url)
r = requests.get(start_url)
soup = BeautifulSoup(r.text)
main_img = soup.find('div', 'main-image').img.get('src')
meizitu_img.append(main_img) guess_like = soup.find('dl', 'widgets_like').find_all('a')
for a in guess_like:
meizi_url.append(a.get('href'))
# 删除起始引导url
# del meizi_url[0] # print(meizi_url)
# print(meizitu_img)
with open("R:/python123全国等考/meizitu/meizi-main-jpg.txt", "w") as fo:
x = 1
y = 1
for node_url in meizi_url:
r = requests.get(node_url)
soup = BeautifulSoup(r.text)
main_img = soup.find('div', 'main-image').img.get('src')
# 添加到文件日志并下载主图
if main_img not in meizitu_img:
x += 1
meizitu_img.append(main_img)
# 写入日志
fo.write(main_img+'\n')
# 下载主图
res = requests.get(main_img, headers=headers)
if res.status_code == 200:
with open(path+str(x)+'-'+str(y)+'.jpg', 'wb') as f:
f.write(res.content)
print('成功保存图片')
# 猜你喜欢,跳转其他页面
guess_like = soup.find('dl', 'widgets_like').find_all('a')
for a in guess_like:
like = a.get('href')
# 添加推荐页面
if like not in meizi_url:
y += 1
meizi_url.append(like)

另外本人还有面下给小白的

    1. 王者荣耀皮肤高清大图
    1. 背景故事爬虫

欢迎学习支持

有用或帮到你的话不妨点个star我将感激不尽

python妹子图爬虫5千张高清大图突破防盗链福利5千张福利高清大图的更多相关文章

  1. [Python爬虫]煎蛋网OOXX妹子图爬虫(1)——解密图片地址

    之前在鱼C论坛的时候,看到很多人都在用Python写爬虫爬煎蛋网的妹子图,当时我也写过,爬了很多的妹子图片.后来煎蛋网把妹子图的网页改进了,对图片的地址进行了加密,所以论坛里面的人经常有人问怎么请求的 ...

  2. Scrapy框架实战-妹子图爬虫

    Scrapy这个成熟的爬虫框架,用起来之后发现并没有想象中的那么难.即便是在一些小型的项目上,用scrapy甚至比用requests.urllib.urllib2更方便,简单,效率也更高.废话不多说, ...

  3. Python爬虫入门教程 2-100 妹子图网站爬取

    妹子图网站爬取---前言 从今天开始就要撸起袖子,直接写Python爬虫了,学习语言最好的办法就是有目的的进行,所以,接下来我将用10+篇的博客,写爬图片这一件事情.希望可以做好. 为了写好爬虫,我们 ...

  4. 爬虫实战【5】送福利!Python获取妹子图上的内容

    [插入图片,妹子图首页] 哈,只敢放到这个地步了. 今天给直男们送点福利,通过今天的代码,可以把你的硬盘装的满满的~ 下面就开始咯! 第一步:如何获取一张图片 假如我们知道某张图片的url,如何获取到 ...

  5. Python协程爬取妹子图(内有福利,你懂得~)

    项目说明: 1.项目介绍   本项目使用Python提供的协程+scrapy中的选择器的使用(相当好用)实现爬取妹子图的(福利图)图片,这个学会了,某榴什么的.pow(2, 10)是吧! 2.用到的知 ...

  6. Python3爬虫系列:理论+实验+爬取妹子图实战

    Github: https://github.com/wangy8961/python3-concurrency-pics-02 ,欢迎star 爬虫系列: (1) 理论 Python3爬虫系列01 ...

  7. Python Scrapy 爬取煎蛋网妹子图实例(一)

    前面介绍了爬虫框架的一个实例,那个比较简单,这里在介绍一个实例 爬取 煎蛋网 妹子图,遗憾的是 上周煎蛋网还有妹子图了,但是这周妹子图变成了 随手拍, 不过没关系,我们爬图的目的是为了加强实战应用,管 ...

  8. 《Python 3网络爬虫开发实战中文》超清PDF+源代码+书籍软件包

    <Python 3网络爬虫开发实战中文>PDF+源代码+书籍软件包 下载: 链接:https://pan.baidu.com/s/18yqCr7i9x_vTazuMPzL23Q 提取码:i ...

  9. python爬取妹子图全站全部图片-可自行添加-线程-进程爬取,图片去重

    from bs4 import BeautifulSoupimport sys,os,requests,pymongo,timefrom lxml import etreedef get_fenlei ...

随机推荐

  1. C++的随机数

    C++产生随机数 C++中没有自带的random函数,要实现随机数的生成就需要使用rand()和srand(). 不过,由于rand()的内部实现是用线性同余法做的,所以生成的并不是真正的随机数,而是 ...

  2. 对近期docker学习的总结

    Docker 总结 1. 说在前头(Docker命令的格式) docker中的对象分为4个(就目前我所学到的) 镜像 image 容器 container 网络 network 数据卷 volume ...

  3. VUE随手记坑

    1.el-select 默认选中的问题 <el-select v-model="temp.audit" placeholder="请选择"> < ...

  4. Loadrunner安装与破解

    一.安装loadrunner 1. 点击setup.exe 2. 点击安装完整程序 3. 点击确定,安装必需程序 4. 安装vc2005的时候报了如下错,导致无法继续安装,没有报错可跳过第五步 5. ...

  5. java课程之团队开发冲刺阶段2.5

    总结昨天进度: 1.昨天对课前提醒的基本框架已经搭好,剩下的就是对如何提醒进行设置 遇到的困难: 1.在一些细节地方,代码有点犯浑,将Preferences的文件写错了,导致在用switch开关得到时 ...

  6. Vulkan SDK 之 Instance

    上一篇 Vulkan SDK Demo 熟悉 粗略的了解了下,一个app是如何调用vulkan的api来展示一个立方体的,但是对其中的每一个api了解并不深刻,后面的系列会根据sample的tutor ...

  7. SFINAE 与 type_traits

    SFINAE 与 type_traits SFINAE 替换失败不是错误 (Substitution Failure Is Not An Error),此特性被用于模板元编程. 在函数模板的重载决议中 ...

  8. POJ 1129:Channel Allocation 四色定理+暴力搜索

    Channel Allocation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13357   Accepted: 68 ...

  9. C++ 操作数据库类

    #pragma once #include <string> #include <windows.h> #include <algorithm> #include ...

  10. 洛谷 P5664 Emiya 家今天的饭(84分)

    题目传送门 解题思路: 对于每一个列c,f[i][j][k]表示到第i行,第c列选了j个,其它列一共选了k个,然后我们读题意发现只要j>k,那就一定是不合法的,然后统计所有方案,减去所有不合法方 ...