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表 ...
随机推荐
- Java_包装类
包装类 在实际应用中, 经常需要把基本数据类型转化为对象以便操作. 因此, Java在设计类时, 为每个基本数据类型设计了一个对应的类进行包装, 这样八个和基本数据类型对应的类统称为包装类(Wrapp ...
- python爬虫06取当当网 Top 500 本五星好评书籍
主要思路 使用 page 变量来实现翻页 我们使用 requests 请求当当网 然后将返回的 HTML 进行正则解析 由于我们暂时还没学到数据库 所以解析完之后就把内容存到文件中 def main( ...
- HTML5+CSS3热门活动页面
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- JAVA中使用JSONArray和JSONObject
json 就是一个键对应一个值,简单的一对一关系. JSONObject json对象,就是一个键对应一个值(键值对),使用的是大括号{ },如:{key:value} JSONArray jso ...
- XDG0062 XAML 与XDG0008 XAML 错误的解决办法
昨天在使用wpf开发系统的时候,突然出现了错误(其实也不能称为错误,就是打开XAML文件时,在解决方案管理器中出现错误提示,XAML编辑文档出现波浪线的提示 The XAML designer dis ...
- mysql 定时任务执行
SET GLOBAL event_scheduler = ON; show variables like 'event_scheduler'; event_scheduler ON 创建event: ...
- 经典分治问题,平面N个点求最近点对
大家好,我们今天来看一道非常非常经典的算法题--最近点对问题. 这个问题经常在各种面试当中出现,难度不低,很少有人能答上来.说实话,我也被问过,因为毫无准备,所以也没有答上来.是的,这道题有点神奇,没 ...
- mysql权限管理命令
#创建用户 create user 'songwp' IDENTIFIED BY '1234' #用户授权 GRANT ALL ON DB01.* TO 'songwp' #撤销权限 REVOKE A ...
- cephfs删除报nospace的问题
ceph Vol 45 Issue 2 CephFS: No space left on device After upgrading to 10.2.3 we frequently see mess ...
- 网络协议_7层_TCP/IP