美文网首页
mm131爬虫

mm131爬虫

作者: tf2jaguar | 来源:发表于2021-08-16 16:13 被阅读0次

https://www.mm131.net

源码地址 在最下方

简介

程序员日常养眼系类、人体构造学系列、技术控爬虫系列。

功能很简单,抓mm131网站的m 女图片,理论上可以全部抓取下来。

思路很简单,根据点击思路,模仿人的浏览方式,最终保存到磁盘。

环境

  • python 3.6
  • requests 2.20.0
  • lxml 4.2.5

使用方法

  1. 首先您需要拥有python 3。请自行安装,本文不涉及安装步骤。
  2. 其次将文件下载到本地,目录结构如下
mm131
└─lib
│   └─ parser.py
├─ main.py
├─ README.md
└─ requirements.txt
  1. 然后您需要安装上述环境中的各依赖。
root@localhost:~$ pip install -r requirements.txt
  1. 在 mm131 目录下执行
root@localhost:~/mm131$ python main.py
  1. 稍后您将会看到抓取过程中的输出,并在 mm131 文件夹中看到抓取到的picture。

[图片]

[图片]

[图片]

脚本思路

网站的防刷策略

直接访问 http://www.mm131.net/xinggan/ 将会被强制跳转到 index 界面,并且内容被置为空字符串。

经过Google浏览器的F12,找到了网站的防刷策略,关建在一个叫做 uaabc.js 的脚本文件

var mUA = navigator.userAgent.toLowerCase() + ',' + document.referrer.toLowerCase();
var _sa = ['baiduspider', 'baidu.com', 'sogou', 'sogou.com', '360spider', 'so.com', 'bingbot', 'bing.com', 'sm.cn', 'mm131.net'];
var _out = false;
for (var i = 0; i < 10; i++) {
    if (mUA.indexOf(_sa[i]) > 1) {
        _out = true;
        break
    }
}
if (!_out) {
    var _d = new Date();
    var _h = _d.getHours();
    if (_h >= 0 && _h <= 23) {
        var mPlace = escape(lo).toLowerCase();
        if (mPlace == '%u5317%u4eac%u5e02' || mPlace == '%u56db%u5ddd%u7701' || mPlace == '%u6e56%u5317%u7701') {
            top.location.href = 'https://m.mm131.net/index/';
        }
    }
};

脚本的大概意思是:userAgent 或者 referrer 中必须存在 ['baiduspider', 'baidu.com', 'sogou', 'sogou.com', '360spider', 'so.com', 'bingbot', 'bing.com', 'sm.cn', 'mm131.net'] 中的一个,
否则将会判断你的当前IP是否是 [北京、湖北、四川] 的,是的话将会强制跳转回 index

那么,我们只需要保证 refer 中包含 mm131.net,详情可见 parser.py 中的 set_header() 方法。

 def set_header(self, referer):
        headers = {
            'Pragma': 'no-cache',
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': 'zh-CN,zh;q=0.9,ja;q=0.8,en;q=0.7',
            'Cache-Control': 'no-cache',
            'Connection': 'keep-alive',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36',
            'Accept': 'image/webp,image/apng,image/*,*/*;q=0.8',
            'Referer': '{}'.format(self.__set_referer(referer)),
        }
        return headers

解析界面

获取首页中主题ID、title

访问 http://www.mm131.net/xinggan/ 后会获取最新的20个主题的 ID以及title,这个将会用作下一步获取主题picture。
通过lxml 的 etree 对html进行定位和解析,最终获取到 id和title。详情可见 parser.py 中的 _ids_titles() 方法。

获取一个主题的所有picture链接

因为所有的picture链接都是很有规律的,很容易就可以拼接出某个主题的所有picture链接。详情可见 parser.py 中的 _ids_titles() 方法。

存储

上一步已经获取到了所有的picture链接了,有了链接,接下来就是存储就好了。可以使用串行下载,当然也可以使用并行,根据自己的需要自行调整就好啦。

  • 串行下载一个页面的所有主题picture。get_page
  • 并行下载一个页面的所有主题picture。get_page_parallel

搜索模块

可以直接搜索想要的角色的picture进行下载。但是目前由于官网服务器内部错误,待解决。


abort me

鉴于回复消息不及时,需要数据集的同学,请自行关注公众号: 小张睡不饱
回复:mm131爬虫代码
即可获得源码下载链接,同时还有其他惊喜哟

相关文章

  • mm131爬虫

    https://www.mm131.net[https://www.mm131.net] 源码地址 在最下方 简介...

  • mm131爬虫(scrapy)

    Scrapy 基本使用 1. Install 2. 新建爬虫项目 3. 新建爬虫,在 spiders 目录下创建(...

  • mm131爬虫与图片下载

    前言 爬取数据时不要随意打开存储文件,否则会造成数据写入失败。 由于没有多线程等,速度会慢一些。Total dat...

  • 11.20-11.26

    本周目标 爬虫 爬虫 爬虫 爬虫

  • 爬虫入门基础

    Day01 一、爬虫介绍 什么是爬虫 Python爬虫的优势 Python爬虫需要掌握什么 爬虫与反爬虫与反反爬虫...

  • 01-认识爬虫

    一、爬虫介绍 什么是爬虫 Python爬虫的优势 Python爬虫需要掌握什么 爬虫与反爬虫与反反爬虫三角之争 网...

  • 爬虫原理与数据抓取之一: 通用爬虫和聚焦爬虫

    通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用爬虫 通用网络爬虫 是 捜索...

  • (了解)通用爬虫和聚焦爬虫--爬虫基础教程(python)(二)

    通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种.我们主要写通用爬虫。 通用爬虫 通...

  • Python 网络爬虫(一)

    网络爬虫的基本介绍 学习爬虫,我想主要从以下几个方面来切入 -爬虫的原理? -爬虫的作用? -爬虫的实现? -爬虫...

  • 7.爬虫概述

    爬虫概述 知识点: 了解 爬虫的概念 了解 爬虫的作用 了解 爬虫的分类 掌握 爬虫的流程 1. 爬虫的概念 模拟...

网友评论

      本文标题:mm131爬虫

      本文链接:https://www.haomeiwen.com/subject/hdambltx.html