爬取mzi.com妹子图片网站(requests库)
看了崔大佬的文章,写了这个爬虫,学习了!原文地址
现在该网站加了反爬机制,不过在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库)的更多相关文章
- python网络爬虫之解析网页的正则表达式(爬取4k动漫图片)[三]
前言 hello,大家好 本章可是一个重中之重,因为我们今天是要爬取一个图片而不是一个网页或是一个json 所以我们也就不用用到selenium模块了,当然有兴趣的同学也一样可以使用selenium去 ...
- Python 爬取陈都灵百度图片
Python 爬取陈都灵百度图片 标签(空格分隔): 随笔 今天意外发现了自己以前写的一篇爬虫脚本,爬取的是我的女神陈都灵,尝试运行了一下发现居然还能用.故把脚本贴出来分享一下. import req ...
- 使用BeautifulSoup自动爬取微信公众号图片
爬取微信分享的图片,根据不同的页面自行修改,使用BeautifulSoup爬取,自行格局HTML修改要爬取图片的位置 import re import time import requests imp ...
- Python爬取 | 唯美女生图片
这里只是代码展示,且复制后不能直接运行,需要配置一些设置才行,具体请查看下方链接介绍: Python爬取 | 唯美女生图片 from selenium import webdriver from fa ...
- python爬取某个网页的图片-如百度贴吧
python爬取某个网页的图片-如百度贴吧 作者:vpoet mail:vpoet_sir@163.com 注:随意copy,不用告诉我 #coding:utf-8 import urllib imp ...
- from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)
使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...
- C#爬取微博文字、图片、视频(不使用Cookie)
前两天在网上偶然看到一个大佬OmegaXYZ写的文章,Python爬取微博文字与图片(不使用Cookie) 于是就心血来潮,顺手撸一个C#版本的. 其实原理也很简单,现在网上大多数版本都需要Cooki ...
- Python+Requests+Xpath(解析)爬取某站点简历图片(数据分析三)
1.环境安装 pip install lxml 2.解析原理 使用通用爬虫爬取网页数据 实例化etree对象,且将页面数据加载到该对象中 使用xpath函数结合xpath表达式进行标签定位和指定数据提 ...
- 爬虫入门(三)——动态网页爬取:爬取pexel上的图片
Pexel上有大量精美的图片,没事总想看看有什么好看的自己保存到电脑里可能会很有用 但是一个一个保存当然太麻烦了 所以不如我们写个爬虫吧(๑•̀ㅂ•́)و✧ 一开始学习爬虫的时候希望爬取pexel上的 ...
随机推荐
- 【杂谈】没有公网IP的电脑如何与外部通信
前言 前几天突然想到的问题,自己先猜测推理了一番,最后在谢希仁版<计算机网络>找到了权威的解答.这里记录一下自己的思考过程. 网站是如何找到我们的? 我们知道,互联网中的两台电脑要进行通信 ...
- 【详解JavaScript系列】JavaScript之流程语句
一 开篇概述 本讲主要讲解JavaScript流程语句,其大致内容包括如下: 其中,常用的if,while,do..while,for在本片文章就不论述,重点论述for..in..,label,bre ...
- Spring之InstantiationAwareBeanPostProcessor接口介绍
InstantiationAwareBeanPostProcessor接口是BeanPostProcessor的子接口,通过接口字面意思翻译该接口的作用是感知Bean实例话的处理器.实际上该接口的 ...
- shell编程练习(一): 笔试1-10
笔试练习(一): 1.求2个数之和 [root@VM_0_5_centos test]# vi 1.sh [root@VM_0_5_centos test]# cat 1.sh #! /bin/sh ...
- 业务开发(一)—— MySQL
0x01.SQL异常Incorrect string value java.sql.SQLException: Incorrect string value: '\xE6\x88\x91\xE7\x9 ...
- 记录.net使用ueditor富文本编辑器
UEditor是什么 最近在在项目的时候使用到了百度的富文本编辑器.官网有详细的操作流程文档.这里我只是记录项目中常用到的一些事件.以便日后可以方便查询. UEditor是百度的一个javascrip ...
- mysql+ssl主从复制
一.作为主服务器Master, 会把自己的每一次改动都记录到 二进制日志 Binarylog 中. (从服务器I/O thread会负责来读取master binary log, 然后写入自身rela ...
- [android] 开启新的activity获取他的返回值
应用场景:打开一个新的activity,在这个activity上获取数据,返回给打开它的界面 短信发送时,可以直接选择系统联系人 界面布局是一个线性布局,里面右侧选择联系人在EditText的右上,因 ...
- Linux 系统的安装 (最全收集)
在几年前,我曾经多次萌生抛弃Win系统,从而使用Linux系统-----(Ubuntu),但是我每次都会遇到同一个问题,TM怎么安装啊. 不是安装奇慢就是不知道安装的方法. 怎样安装Ubuntu操作系 ...
- struts2框架-----Action
控制器Action Action对象是struts2框架的核心,每个URL映射到特定的Action,其提供处理来自用户的请求所需要的处理逻辑.Action有两个重要的功能,即将数据从请求传递到视图和协 ...