基本配置:

  • Python版本:3.6
  • 开发工具:pycharm
    image

403是返回的状态码

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

该网站有反爬措施

我们先试一下伪造浏览器

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

image

我们构造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'`

`}`

image

返回的状态码为 200

说明伪造浏览器成功

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

image

我习惯调试使用bs4库BeautifulSoup类

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

查看网页编码

image

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

开始进入解析部分

image

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

image

image

菜单栏为

    标签而且id='menu-nav’开始写代码

    首先我们先创建BeautifulSoup对象

    image

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

    image

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

    image

    image

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

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

    image

    打开这个网页

    我们分析这个网页会发现

    总共有27个图片缩略图

    其中有三个是广告

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

    查看源代码

    image

    图片在

    • 标签里面且id=‘pins’

    image

    找到这个ul标签之后

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

    image

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

    所以长度为24

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

    image

    一个图片是一个

    • 标签
    • image

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

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

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

      我们要的图片链接在这里

      image

      image

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

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

      image

      方法与前面类似

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

      image

      image

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

      image

      使用requests去下载它

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

      image

      文件写入为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'``,<br>  ``'Referer'``:``'https://www.mzitu.com/184274'`
      
      `}<br>``# 这里的Referer是你跳转到这个图片的上一个地址 这也是一个反爬小技巧`
      
      

      image

      图片下载成功

      img是requests返回内容

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

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

      视频 音频也可以这样下载

      打开我们下载的图片

      image

      成功下载

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

      以下笔者的思路

      image

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

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

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

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

      最后一张图片就是

      image

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

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

      整个写完爬虫后运行一下 泡杯茶

      完整代码60行左右就能进行爬取

      image

      image


    本文转载:CSDN博客