爬取妹子图片

2019-06-13

环境WIN10 1903 python 3.7.3

个人习惯先在IDLE中进行调试

import requests
from bs4 import BeautifulSoup
url='https://www.mzitu.com/'
response=requests.get(url=url)
print(response.status_code)

403是返回的状态码

403错误,表示资源不可用。服务器理解客户的请求,但拒绝处理它,通常由于服务器上文件或目录的权限设置导致的WEB访问错误。

该网站有反爬措施

我们先试一下伪造浏览器

打开google看一下我们发送的请求

我们构造headers

headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36'
}

返回的状态码为 200

说明伪造浏览器成功

使用response.text查看返回的内容

我习惯调试使用bs4库BeautifulSoup类

正式写脚本我习惯用lxml库的etree类

查看网页编码

解析判断的编码与备用编码相同 我们可以忽略

开始进入解析部分

我们选取网页格式相同的4个部分进行爬取

菜单栏为<ul></ul>标签而且id='menu-nav'开始写代码

首先我们先创建BeautifulSoup对象

关于BeautifulSoup的使用 查看官方文档 https://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html

选取我们需要的三个li标签加入我们创建的link_urls列表中

现在我们要爬取的三个美女类型的链接已经保存到link_urls列表中了

我们以第一类型的性感美女进行爬取

打开这个网页

我们分析这个网页会发现

总共有27个图片缩略图

其中有三个是广告

提取数据的时候要对广告进行清除

查看源代码

图片在<ul>标签里面且id='pins'

找到这个ul标签之后

我们继续提取其中的li标签

由于广告的标签含有class属性我们提取li标签已经过滤了三个广告

所以长度为24

下一步获取图片的该类图片的地址 属性为href

一个图片是一个<li>标签

图片的链接到手 现在的链接只是我们要爬取的图片的地址 并不是图片的链接

现在我们进入图片的提取部分

我们以这个链接 https://www.mzitu.com/184274 进行分析

我们要的图片链接在这里

获取页面还是要通过伪造浏览器的方式

下载页面完成我们去获得图片的链接

方法与前面类似

网页中第一个img标签就是我们要的图片

获取到图片的地址 地址在img标签的src属性中我们提取出来

使用requests去下载它

我们使用requests下载时候会发现下载失败

文件写入为0

我们继续构造headers来成功下载图片

headers={
"User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36',
  'Referer':'https://www.mzitu.com/184274'
}
# 这里的Referer是你跳转到这个图片的上一个地址 这也是一个反爬小技巧

图片下载成功

img是requests返回内容

由于图片是二进制文件我们用"wb"方式打开写入文件

保存为jpg这样图片就写入成功了

视频 音频也可以这样下载

打开我们下载的图片

成功下载

爬取整个类型的图片我们只需要构造几个函数对url进行解析就好

以下笔者的思路

1 找到一个图片的地址我们可以提取页面的下一页的链接然后就是递归调用函数 进行爬取

2 通过查看图片的url我们发现图片是有规律的

https://i.meizitu.net/2019/05/12a02.jpg

https://i.meizitu.net/2019/05/12a03.jpg

...................

最后一张图片就是

https://i.meizitu.net/2019/05/12a50.jpg

这样就能爬取这个系列的图片了

python 爬取妹子的更多相关文章

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

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

  2. Python 爬取 妹子图(技术是无罪的)

    ... #!/usr/bin/env python import urllib.request from bs4 import BeautifulSoup def crawl(url): header ...

  3. Python 爬取妹子图(技术是无罪的)

    ... import requests from bs4 import BeautifulSoup import os import sys class mzitu(): def html(self, ...

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

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

  5. 用python爬取全网妹子图片【附源码笔记】

    这是晚上没事无聊写的python爬虫小程序,专门爬取妹子图的,养眼用的,嘻嘻!身为程序狗只会这个了! 废话不多说,代码附上,仅供参考学习! """ 功能:爬取妹子图全网妹 ...

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

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

  7. python 爬取王者荣耀高清壁纸

    代码地址如下:http://www.demodashi.com/demo/13104.html 一.前言 打过王者的童鞋一般都会喜欢里边设计出来的英雄吧,特别想把王者荣耀的英雄的高清图片当成电脑桌面 ...

  8. Python 爬取所有51VOA网站的Learn a words文本及mp3音频

    Python 爬取所有51VOA网站的Learn a words文本及mp3音频 #!/usr/bin/env python # -*- coding: utf-8 -*- #Python 爬取所有5 ...

  9. python爬取网站数据

    开学前接了一个任务,内容是从网上爬取特定属性的数据.正好之前学了python,练练手. 编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲 ...

随机推荐

  1. nyoj_676_小明的求助_201312042142-2

    小明的求助 时间限制:2000 ms  |           内存限制:65535 KB 难度:2   描述 小明对数学很有兴趣,今天老师出了道作业题,让他求整数N的后M位,他瞬间感觉老师在作弄他, ...

  2. iOS的四种传值方式

    传值有四种方法 : 1. 属性传值 2. 单例传值 3. 代理传值 4. block传值     一.属性传值   (前-->后) 1. 后面的界面定义一个属性  存放前一个界面传过来的值    ...

  3. mongodb之配置

    前言 最新版本支持yaml格式的配置文件,只支持空格,不能使用tab 详细配置说明 #系统日志配置 systemLog: destination: file path: /var/log/mongod ...

  4. 关于PHP会话:session和cookie

    会话处理解决什么问题 HTTP(超文本传输协议)定义了通过万维网(WWW)传输文本.图形.视频和全部其它的数据的规则.HTTP是一种无状态协议,每次请求的处理,都与之前和之后的请求无关. 会话处理是这 ...

  5. ExecutorCompletionService原理具体解释

    在JDK并发包中有这么一个类ExecutorCompletionService,提交任务后,能够按任务返回结果的先后顺序来获取各任务运行后的结果. 该类实现了接口CompletionService: ...

  6. python 005 正则表达式

    . 任意字符 ^ 匹配字符串开始 $ 匹配字符串结尾 * 匹配前面出现了零次或多次 + 匹配前面出现了一次或多次 ? 匹配前面出现零次或一次 {N} 匹配前面出现了N次 {M,N} 匹配重复出现M-N ...

  7. ListView点击或选中item改变背景

    点击或选中ListView中的一项后.使item背景改变,失去焦点相同显示选中的背景.又一次选中另外一项才刷新: 在Adapter中配置: public class MyAdapter extends ...

  8. Codeboy Blog的搭建

    本文介绍了codeboy.me站点的搭建过程. 站点使用了jeykll进行构建.在CleanBlog等模板的基础上进行改造. jekyll是一个简单的免费的Blog生成工具,类似WordPress.可 ...

  9. 【BZOJ 2565】 最长双回文串

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2565 [算法] Manacher [代码] #include<bits/std ...

  10. php的get_object_vars函数

    我在看ecshop源码的时候,发现了一个非常有趣的函数,在此记下:get_object_vars() 从字面我们可以猜到,这个函数是针对类的一个方法:语法:array  get_object_vars ...