20200311_最新爬取mzitu
废话不多, 直接上代码, python3.6:
import requests
from bs4 import BeautifulSoup
import os
import time;
import random #pip install BeautifulSoup4 -i https://pypi.douban.com/simple
#pip install requests -i https://pypi.douban.com/simple # http请求头
Hostreferer = {
'Referer': 'http://www.mzitu.com', 'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
} # 此请求头Referer破解盗图链接
Picreferer = {
# 'User-Agent': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
# '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',
# 'Referer': 'http://i.meizitu.net',
# https://www.mzitu.com/224497/3
'Referer': 'http://www.mzitu.com',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
all_url = 'https://www.mzitu.com'
# 对mzitu主页all_url发起请求,将返回的HTML数据保存,便于解析
start_html = requests.get(all_url, headers=Hostreferer) soup = BeautifulSoup(start_html.text, "html.parser") # 缩进格式
page = soup.find_all('a', class_='page-numbers')
# 最大页数
max_page = page[-2].text
for n in range(1, int(max_page) + 1):
path = 'D:/mzitu/' #存储路径
all_url = 'https://www.mzitu.com' #重新赋值
if n!=1:
all_url= all_url+"/page/"+str(n)+"/";
print('开始爬第 %s 页, 网址是 %s' % (n , all_url))
start_html = requests.get(all_url, headers=Hostreferer);
soup = BeautifulSoup(start_html.text, "html.parser")
# alt = soup.find(id='pins').find_all('a', target='_blank').find_all('img',class_='lazy').get('alt');
hrefs = soup.find(id='pins').find_all('a', target='_blank'); #根据ID找 for href in hrefs:
imgs = href.find('img',class_='lazy');
if imgs == None:
break;
alt = imgs.get('alt');
url = href.get('href');
start_html2 = requests.get(url, headers=Hostreferer);
soup2 = BeautifulSoup(start_html2.text, "html.parser") # 缩进格式
page2 = soup2.find('div', class_='pagenavi').find_all('a');
# print (page2[0])
max_page2 = page2[-2].text;
path = path + alt.strip().replace('?', '');
if (os.path.exists(path)):
pass
# print('目录已存在')
else:
os.makedirs(path)
for m in range(1,int(max_page2)): time.sleep(random.randint(1,5))
# alt = href.find('img', class_='lazy').get('alt');
# url = href.get('href');
url3 = url+'/'+str(m)+'/'
print('开始爬→%s' % url3)
start_html3 = requests.get(url3, headers=Hostreferer);
soup3 = BeautifulSoup(start_html3.text, "html.parser") # 缩进格式
picSrc = soup3.find('div', class_='main-image').find('a').find('img').get('src');#.get('src');#.get('src'); #div class="main-image"
# imglist = #获取当前页上所有的子连接, 不包含class="box"
html = requests.get(picSrc, headers=Picreferer) # 提取图片名字
file_name = path+'/'+picSrc.split(r'/')[-1];
# 保存图片
f = open(file_name, 'wb')
f.write(html.content)
f.close()
print('图片保存到%s' % file_name);
20200311_最新爬取mzitu的更多相关文章
- java爬虫系列第二讲-爬取最新动作电影《海王》迅雷下载地址
1. 目标 使用webmagic爬取动作电影列表信息 爬取电影<海王>详细信息[电影名称.电影迅雷下载地址列表] 2. 爬取最新动作片列表 获取电影列表页面数据来源地址 访问http:// ...
- python利用requests和threading模块,实现多线程爬取电影天堂最新电影信息。
利用爬到的数据,基于Django搭建的一个最新电影信息网站: n1celll.xyz (用的花生壳动态域名解析,服务器在自己的电脑上,纯属自娱自乐哈.) 今天想利用所学知识来爬取电影天堂所有最新电影 ...
- scrapy实战--爬取最新美剧
现在写一个利用scrapy爬虫框架爬取最新美剧的项目. 准备工作: 目标地址:http://www.meijutt.com/new100.html 爬取项目:美剧名称.状态.电视台.更新时间 1.创建 ...
- python爬取斗图网中的 “最新套图”和“最新表情”
1.分析斗图网 斗图网地址:http://www.doutula.com 网站的顶部有这两个部分: 先分析“最新套图” 发现地址栏变成了这个链接,我们在点击第二页 可见,每一页的地址栏只有后面的pag ...
- scrapy 动态网页处理——爬取鼠绘海贼王最新漫画
简介 scrapy是基于python的爬虫框架,易于学习与使用.本篇文章主要介绍如何使用scrapy爬取鼠绘漫画网海贼王最新一集的漫画. 源码参见:https://github.com/liudaol ...
- 利用python3 爬虫 定制版妹子图mzitu爬取
在刚开始学爬虫的时候,用来练手的基础爬虫就是爬取各种妹子图片,前几天同时说了这个,便准备随便写一个...最后发现真是三天不练..什么都记不住了!!所以花了政治一天重新写了一个爬虫程序,并且支持按照时间 ...
- requests结合xpath爬取豆瓣最新上映电影
# -*- coding: utf-8 -*- """ 豆瓣最新上映电影爬取 # ul = etree.tostring(ul, encoding="utf-8 ...
- 5分钟python爬虫案例,手把手教爬取国内外最新疫情历史数据
俗话说的好,“授之以鱼不如授之以渔”,所以小编今天就把爬疫情历史数据的方法分享给你们. 基本思路:分析腾讯新闻“抗肺炎”版块,采用“倒推法”找到疫情数据接口,然后用python模拟请求,进而保存疫情历 ...
- python爬虫(正则取数据)读取表格内的基金代码后爬取基金最新净值,同时写到对应的表格中,基于最近一次购买净值计算出涨跌幅(名字有点长)
最近基金跌的真够猛,虽说是定投,但大幅度下跌,有时候适当的增加定投数也是降低平均成本的一种方式 每天去看去算太费时间,写了个爬虫,让他自动抓数据后自动计算出来吧 实现逻辑: 1.创建了一个excel表 ...
随机推荐
- 840. Magic Squares In Grid ——weekly contest 86
题目链接:https://leetcode.com/problems/magic-squares-in-grid/description attention:注意给定的数字不一定是1-9. time: ...
- Positions of Large Groups
Positions of Large Groups In a string S of lowercase letters, these letters form consecutive groups ...
- 关于Java中泛型、反射和注解的扫盲篇
泛型 泛型概念 泛型是在JDK1.5之后引入的,旨在让我们写出更加通用化,更加灵活的代码.通用化的手段在于让数据类型变得参数化,定义泛型时,对应的数据类型是不确定的,泛型方法被调用时,会指定具体类 ...
- Dcoker 安装 rabbitMq
使用Docker安装部署RabbitMQ 1.docker search rabbitmq:management 2.docker pull rabbitmq:management ...
- System.Net邮件发送功能踩过的坑
System.Net邮件发送功能踩过的坑 目录 System.Net邮件发送功能踩过的坑 1.EazyEmail邮件发送类库 2.邮件发送授权码与邮件密码 3.通过邮件密码来发送邮件 4.Wiresh ...
- PS中抠图的四种方法介绍
工具/原料 photoshop 软件(我用的是photoshop cc) 需要抠图的图片 开始的步骤 打开ps 打开图片,ctrl+O 魔棒抠图法 对于前景和后景有明显差别的图片用魔棒抠图法抠图比较容 ...
- 【JVM第六篇--对象】对象的实例化、内存布局和访问定位
写在前面的话:本文是在观看尚硅谷JVM教程后,整理的学习笔记.其观看地址如下:尚硅谷2020最新版宋红康JVM教程 一.对象的实例化 在平常写代码的过程中,我们用class关键字定义的类只是一个类的模 ...
- MVCC(转)
什么是 MVCC MVCC (Multiversion Concurrency Control) 中文全程叫多版本并发控制,是现代数据库(包括 MySQL.Oracle.PostgreSQL 等)引擎 ...
- mysql开发常用技巧总结
1.查询某个schema,某张表的创建时间. SELECT CREATE_TIME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='db_camp ...
- 编译的Ceph二进制文件过大问题
前言 在ceph的研发群里看到一个cepher提出一个问题,编译的ceph的二进制文件过大,因为我一直用的打包好的rpm包,没有关注这个问题,重新编译了一遍发现确实有这个问题 本篇就是记录如何解决这个 ...