今天想爬取下往上很多人都爬取过的https://www.mzitu.com/ 。
结果很尴尬,只能很浅显地爬取一些首页图片,因为遭遇到了反盗链。

鉴于图片过于那啥,其实我就来搞学习的,也不是什么LSP,老司机之类的,因此,在此就不做解析了哈哈哈,大家自行去看网站的首页吧啊。

因为遭遇到了反盗链,所以浅显地把首页上哪些分页的照片爬取下来就得了。

这是故事上,下一次我将试图突破反盗链,如果成功的话,就会补充上。

import os
import requests
from bs4 import BeautifulSouprootrurl = 'https://www.mzitu.com/'
save_dir = 'D:/estimages/'
no_more_pages = 'END'
max_pages = 10# 这是一个集合,不能重复,也就是不能重复下载图片
image_cache = set()
index = len(image_cache)headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36","Referer": "https://www.mzitu.com/"
}def getNextPageUrl(html):ahref = html.find('a', {'class': 'next page-numbers'})  # 找到导航条的位置,获得下一个连接网页的位置if ahref is None:print('no more page')return no_more_pageselse:return ahref.get('href')def saveImgs(html, mainidx):lis = html.find('ul', {'id': 'pins'}).find_all('li')  # 找到导航条的位置,获得下一个连接网页的位置subidx = 1for link in lis:# step 1: save this cover image, and create the folder.a = link.find('a')href = a.get('href')img = a.find('img').get('data-original')print('img: ' + img)# tag = '{}{}/{}/'.format(save_dir, mainidx, subidx)tag = '{}{}/'.format(save_dir, mainidx)if not os.path.exists(tag):os.makedirs(tag)with open('{}/{}'.format(tag, "coverImg_" + img.split("/")[-1]), 'wb') as jpg:  # 请求图片并写进去到本地文件jpg.write(requests.get(img).content)if img not in image_cache:image_cache.add(img)# step 2: enter the mew page to save deeply.# 防盗链,我暂时没法解决。。。。。。# deepSaveImgs(href, tag)    #深度搜索该图片组subidx = subidx + 1if __name__ == '__main__':url = rootrurlidx = 1while 1:print("next page: " + url)html = BeautifulSoup(requests.get(url, headers=headers).text, features="html.parser")saveImgs(html, idx)   # 处理当前浏览页面if idx >= max_pages:breakidx = idx + 1url = getNextPageUrl(html)   # 获得下一个浏览页if url == no_more_pages:break

效果图如下啊:
不敢展开展示啊。。。。。。

Python《第一次爬虫遭遇反盗链(上)》相关推荐

  1. Github配置(git+vscode+python+jupyter)

    ①下载git 打开 git bash 工具的用户名和密码存储 $ git config --global user.name "Your Name" $ git config -- ...

  2. 【实验楼】python简明教程

    ①终端输入python进入 欣赏完自己的杰作后,按 Ctrl + D 输入一个 EOF 字符来退出解释器,你也可以键入 exit() 来退出解释器. ②vim键盘快捷功能分布 ③这里需要注意如果程序中 ...

  3. 【Kaggle Learn】Python 5-8

    五. Booleans and Conditionals Using booleans for branching logic x = True print(x) print(type(x))''' ...

  4. 【Kaggle Learn】Python 1-4

    [Kaggle Learn]Python https://www.kaggle.com/learn/python 一. Hello, Python A quick introduction to Py ...

  5. 使用python愉快地做高数线代题目~

    今天接触到了python,发现真是极易上手啊!对比c语言是什么鬼东西= = 诶,等下,看完教学文章发现TA在下面写了这句话 如果做了前面的内容你可能已被吸引了,觉得c语言真的是废材! 不...不是的. ...

  6. python 位运算与等号_Python 运算符

    和大多数语言一样,Python也有很多运算符,并且运算符跟其他语言的运算符大同小异接下来一一介绍: 算术运算符: 运算符描述实例 +加 - 两个对象相加a+b的输出结果是30 -减 - 得到复数或者一 ...

  7. python减小内存占用_如何将Python内存占用缩小20倍?

    当程序执行过程中RAM中有大量对象处于活动状态时,可能会出现内存问题,特别是在对可用内存总量有限制的情况下. 下面概述了一些减小对象大小的方法,这些方法可以显著减少纯Python程序所需的RAM数量. ...

  8. python中排序英文单词怎么写_Python实现对文件进行单词划分并去重排序操作示例...

    本文实例讲述了Python实现对文件进行单词划分并去重排序操作.,具体如下: 文件名:test1.txt 文件内容: But soft what light through yonder window ...

  9. python程序如何执行死刑图片_如何判断对象已死

    已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了: 引用计数 给对象添加一个引用计数器,每当有一个地方引用他,计算器就加 1:当引用失效时,计数器减 1:任何时刻计数器 ...

  10. Python gRPC 安装

    1. 安装依赖库 sudo pip3 install grpcio sudo pip3 install protobuf sudo pip3 install grpcio_tools 2. 生成对应文 ...

最新文章

  1. VC中读写ini文件
  2. 3D打印攻破无人车激光雷达,这个奇怪的盒子它看不见
  3. re模块常用修饰符_re模块中常用功能函数
  4. 批处理 获取计算机硬件信息,检测硬件的批处理命令,检测硬件bat,一键获取电脑硬件信息...
  5. 更改计算机的主题和桌面背景,怎么设置和更改桌面背景
  6. CentOS虚拟机根分区磁盘扩容操作
  7. Spring AOP术语
  8. 华纬科技冲刺深交所:拟募资4亿 二代接班金雷,控制65%股权
  9. day20.顺序结构 选择结构
  10. 苹果系统代码汉字转拼音
  11. PXE预启动执行环境简介
  12. SolidWorks快速绘制齿轮模型
  13. 20 JNI - c++层 操作 java 层对象
  14. 字节流与字符流(FileInputStream类和FileOutputStream类)
  15. python爬虫爬取(中国空气质量在线监测分析平台)北京PM2.5,2013年至2018年的数据
  16. 基于python和TensorFlow的电影推荐系统
  17. php 小时,php - 将秒转换为小时:分钟:秒
  18. 美国Sonicwall 防火墙×××视频教程
  19. 嵌入式linux包含哪些内容
  20. NFV(Network Function Virtualizatin)·网络功能虚拟化战略实施

热门文章

  1. 高效数据序列化的工具 FlatBuffers 的初体验
  2. 采用rsync实现两台solaris服务之间的文件同步
  3. 新设计了自己博客的模板
  4. TypeScript 安装与使用
  5. 面试精讲之面试考点及大厂真题 - 分布式专栏 19 系统中的降级熔断设计
  6. Docker部署安装MongoDB
  7. Spring Security 教程
  8. Java Generics示例教程 - 通用方法,类,接口
  9. 探究Redis两种持久化方式下的数据恢复
  10. leetcode 删除链表的倒数第N个节点