看了崔大佬的文章,写了这个爬虫,学习了!原文地址

现在该网站加了反爬机制,不过在headers里加上refere参数就行了。

以下代码仅做学习记录之用:

from bs4 import BeautifulSoup
import requests
import os
import time
# 构造带页码的页面链接
def get_mzi_page():
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1"
" (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}
res = requests.get('http://www.mzitu.com', headers=headers)
soup = BeautifulSoup(res.text, 'lxml')
page = soup.select('.nav-links a') # 返回一个列表
page_count = page[-2].get_text()
for i in range(1, int(page_count) + 1):
# 构造每个页面链接
page_url = "http://www.mzitu.com/page/" + f"{i}/"
# 获取当前页面的所有专题,并输出提示
print(f"总计{page_count}页,当前第{i}页:")
get_mzi_channel(page_url) def get_mzi_channel(url):
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1"
" (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, 'lxml')
# 抓取每个妹子的专题页面
channel = soup.select('#pins li span a')
channel_count_onepage = len(channel)
print(channel)
count = 0
# 遍历所有专题url,逐个访问下载图片
for c in channel:
count += 1
channel_name = c.get_text()
os.mkdir('D;\mziPic')
filepath = f'D:\mziPic\{channel_name}'
if os.path.exists(filepath):
pass
else:
os.mkdir(filepath)
channel_url = c.get('href')
print(f"本页总计{len(channel)}个妹子,当前第{count}个妹子")# 提示信息
get_mzi_img(filepath, channel_url) def get_mzi_img(filepath ,url):
# 下载一个妹子的所有图片
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1"
" (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, 'lxml')
#每个妹子的all图片是分多个页面展示的,所以还要再访问多个页面,逐图片下载
img_page = soup.select('.pagenavi a')
img_page_count = img_page[-2].get_text()
# 构造逐图片下载的url
count2 = 0
for i in range(1, int(img_page_count) + 1):
count2 += 1
img_page_url = url + f'/{i}'
print(f"本妹子共{img_page_count}图片,现第{count2}张")
print("img_page_url(refere):", img_page_url)
download(filepath, img_page_url, count2) def download(filepath, img_page_url, count2):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
headers2 = {'Accept': 'image/webp,image/apng,image/*,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Connection': 'keep-alive',
'DNT': '',
'Host': 'i.meizitu.net',
'Referer': img_page_url,
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
res = requests.get(img_page_url, headers=headers)
print("res.status_code", res.status_code)
if res.status_code == 200:
soup = BeautifulSoup(res.text, 'lxml')
img_url = soup.find('div', class_='main-image').find('img').get('src')
print("图片地址", img_url)
# 这个网站访问图片必须要带refere参数,不然返回403,(折腾好久才发现问题
res2 = requests.get(img_url, headers=headers2)
print("res2.status_code:", res2.status_code)
with open(filepath + f'/{count2}.jpg', 'ab') as f:
f.write(res2.content)
f.close()
# time.sleep(1) # 注释后运行下好像不封ip。。。
else:
pass if __name__ == '__main__':
get_mzi_page()

爬取mzi.com妹子图片网站(requests库)的更多相关文章

  1. python网络爬虫之解析网页的正则表达式(爬取4k动漫图片)[三]

    前言 hello,大家好 本章可是一个重中之重,因为我们今天是要爬取一个图片而不是一个网页或是一个json 所以我们也就不用用到selenium模块了,当然有兴趣的同学也一样可以使用selenium去 ...

  2. Python 爬取陈都灵百度图片

    Python 爬取陈都灵百度图片 标签(空格分隔): 随笔 今天意外发现了自己以前写的一篇爬虫脚本,爬取的是我的女神陈都灵,尝试运行了一下发现居然还能用.故把脚本贴出来分享一下. import req ...

  3. 使用BeautifulSoup自动爬取微信公众号图片

    爬取微信分享的图片,根据不同的页面自行修改,使用BeautifulSoup爬取,自行格局HTML修改要爬取图片的位置 import re import time import requests imp ...

  4. Python爬取 | 唯美女生图片

    这里只是代码展示,且复制后不能直接运行,需要配置一些设置才行,具体请查看下方链接介绍: Python爬取 | 唯美女生图片 from selenium import webdriver from fa ...

  5. python爬取某个网页的图片-如百度贴吧

    python爬取某个网页的图片-如百度贴吧 作者:vpoet mail:vpoet_sir@163.com 注:随意copy,不用告诉我 #coding:utf-8 import urllib imp ...

  6. from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)

    使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...

  7. C#爬取微博文字、图片、视频(不使用Cookie)

    前两天在网上偶然看到一个大佬OmegaXYZ写的文章,Python爬取微博文字与图片(不使用Cookie) 于是就心血来潮,顺手撸一个C#版本的. 其实原理也很简单,现在网上大多数版本都需要Cooki ...

  8. Python+Requests+Xpath(解析)爬取某站点简历图片(数据分析三)

    1.环境安装 pip install lxml 2.解析原理 使用通用爬虫爬取网页数据 实例化etree对象,且将页面数据加载到该对象中 使用xpath函数结合xpath表达式进行标签定位和指定数据提 ...

  9. 爬虫入门(三)——动态网页爬取:爬取pexel上的图片

    Pexel上有大量精美的图片,没事总想看看有什么好看的自己保存到电脑里可能会很有用 但是一个一个保存当然太麻烦了 所以不如我们写个爬虫吧(๑•̀ㅂ•́)و✧ 一开始学习爬虫的时候希望爬取pexel上的 ...

随机推荐

  1. 字体反爬--css+svg反爬

    这个验证码很恶心,手速非常快才能通过.. 地址:http://www.dianping.com/shop/9964442 检查一下看到好多字没有了,替代的是<x class="xxx& ...

  2. leetcode — sort-colors

    import java.util.Arrays; /** * Source : https://oj.leetcode.com/problems/sort-colors/ * * * Given an ...

  3. 【转载】红外遥控HS0038B接法

        4.7uF电容的作用:去耦和旁路   去耦电容的主要功能就是提供一个局部的直流电源给有源器件,以减少开关噪声在板上的传播和将噪声引导到地.通常也把输出信号的干扰作为滤除对象. 旁路电容:为高频 ...

  4. 【杂谈】Remember-Me的实现

    前言 此篇随笔记录了Remember-Me实现过程中出现的问题和解决方案,以及相关的思考. 正文 1. RememberMe是什么? RememberMe意为记住我,对应登录界面的那个勾选项.另一种说 ...

  5. python闯关之路(五)前端开发

    一,HTML部分 1,XHTML和HTML有什么区别 HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言最主要的不同: XHTML 元素必须被正确地嵌套. XHTML 元素必 ...

  6. C语言学习之assert

    C语言学习之assert assert (编程术语) 编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式.断言表示为一些布尔表达式,程序员相信 ...

  7. Scrapy爬虫(4)爬取豆瓣电影Top250图片

      在用Python的urllib和BeautifulSoup写过了很多爬虫之后,本人决定尝试著名的Python爬虫框架--Scrapy.   本次分享将详细讲述如何利用Scrapy来下载豆瓣电影To ...

  8. 一个简单的Code First建立

    1]从VS中建立一个mvc程序 记得添加NuGet包 然后在web.config中添加链接数据库的语句 <connectionStrings> <add name="Ent ...

  9. [转]PHP开发者必须了解的工具—Composer

    本文转自:https://blog.csdn.net/Zhihua_W/article/details/80345973 Composer是PHP 用来管理依赖(dependency)关系的工具.你可 ...

  10. c# nginx 配置

    listen ; #端口 server_name localhost; #域名可以有多个 用空格隔开 #charset koi8-r; #access_log logs/host.access.log ...