Python爬虫实战(七)——使用代理IP批量下载4K高清小姐姐图片(附上完整源码)

本文主要是介绍Python爬虫实战(七)——使用代理IP批量下载4K高清小姐姐图片(附上完整源码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、爬取目标
  • 二、实现效果
  • 三、准备工作
  • 四、获取免费代理IP
    • 4.1 使用代理的好处?
    • 4.2 获取免费代理
    • 4.3 获取代理
  • 五、代理实战
    • 5.1 导入模块
    • 5.2 设置翻页
    • 5.3 获取图片链接
    • 5.4 下载图片
    • 5.5 调用主函数
    • 5.6 完整源码
  • 六、总结
  • 书籍推荐

一、爬取目标

本次爬取的目标是 又又又一个 某网站4K高清小姐姐图片:

在这里插入图片描述

二、实现效果

实现批量下载指定关键词的图片,存放到指定文件夹中:

在这里插入图片描述

三、准备工作

Python:3.10

编辑器:PyCharm

第三方模块,自行安装:

pip install requests # 网页数据爬取
pip install lxml # 提取网页数据

四、获取免费代理IP

4.1 使用代理的好处?

爬虫使用代理IP的好处有以下几点:

  • 轮换IP地址:使用代理IP可以轮换IP地址,降低被封禁的风险,从而保持爬取的连续性和稳定性。
  • 提高采集速度:代理IP可以提供多个IP地址,使得爬虫能够同时进行多个线程使用,从而加快数据的采集速度。
  • 绕过反爬虫机制:许多网站采取了各种反爬虫机制,例如IP封禁、验证码、请求频率限制等。使用代理IP可以帮助爬虫绕过这些机制,保持正常的数据采集。
  • 保护个人隐私:使用代理IP可以帮助隐藏真实的IP地址,保护个人身份和隐私信息。

博主最近发现一款还不错的代理IP,易品HTTP家的高匿名代理IP,注册就可以免费领取1G的流量非常香:点击免费试用

4.2 获取免费代理

1、打开易品HTTP官网:点击免费试用

2、所有代理IP都需要实名认证一下才可以使用,不会的参考实名教程:实名教程

在这里插入图片描述

2、选择白名单 》添加白名单:

在这里插入图片描述

3、点击API提取 》 选择直连提取:

在这里插入图片描述

4、选择流量提取,点击生成API链接(我们这里有1G免费流量随便使用):

在这里插入图片描述

如果还是不会提取免费代理IP的可以询问 左下角的客服

在这里插入图片描述

4.3 获取代理

获取到图片链接后我们需要再次发送请求去下载图片,由于请求量一般会很大所以需要用到代理IP。上面我们已经手动获取到了代理IP,下面来看Python如何挂上代理IP发送请求:

1、通过爬虫去获取API接口的里面的代理IP(注意:下面代理URL,看4.2教程换成自己的API链接):

import requests
import time
import randomdef get_ip():url = "这里放你自己的API链接"while 1:try:r = requests.get(url, timeout=10)except:continueip = r.text.strip()if '请求过于频繁' in ip:print('IP请求频繁')time.sleep(1)continuebreakproxies = {'https': '%s' % ip}return proxiesif __name__ == '__main__':proxies = get_ip()print(proxies)

五、代理实战

5.1 导入模块

import requests  # python基础爬虫库
from lxml import etree  # 可以将网页转换为Elements对象
import time  # 防止爬取过快可以睡眠一秒
import os # 创建文件

5.2 设置翻页

首先我们来分析一下网站的翻页,一共有10页:
在这里插入图片描述

第一页链接:

https://www.moyublog.com/95-2-2-0.html

第二页链接:

https://www.moyublog.com/95-2-2-1.html

第三页链接:

https://www.moyublog.com/95-2-2-2.html

可以看出每页只有95-2-2-后面从第二页开始依次加上1,所以用循环来构造所有网页链接:

if __name__ == '__main__':# 页码page_number = 10# 循环构建每页的链接for i in range(0,page_number+1):# 页数拼接url = f'https://www.moyublog.com/95-2-2-{i}.html'

5.3 获取图片链接

可以看到所有图片url都在 ul标签 > li标签 > a标签 > img标签下:

在这里插入图片描述

我们创建一个get_imgurl_list(url)函数传入网页链接获取 网页源码,用xpath定位到每个图片的链接:

def get_imgurl_list(url,imgurl_list):"""获取图片链接"""# 请求头headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}# 发送请求response = requests.get(url=url, headers=headers)# 获取网页源码html_str = response.text# 将html字符串转换为etree对象方便后面使用xpath进行解析html_data = etree.HTML(html_str)# 利用xpath取到所有的li标签li_list = html_data.xpath("//ul[@class='clearfix']/li")# 打印一下li标签个数看是否和一页的电影个数对得上print(len(li_list))  # 输出20,没有问题for li in li_list:imgurl = li.xpath(".//a/img/@data-original")[0]print(imgurl)# 写入列表imgurl_list.append(imgurl)

运行结果:
在这里插入图片描述

点开一个图片链接看看,OK没问题:

在这里插入图片描述

5.4 下载图片

图片链接有了,代理IP也有了,下面我们就可以下载图片。定义一个get_down_img(img_url_list)函数,传入图片链接列表,然后遍历列表,每下载一个图片切换一次代理,将所有图片下载到指定文件夹:

def get_down_img(imgurl_list):# 在当前路径下生成存储图片的文件夹os.mkdir("小姐姐")# 定义图片编号n = 0for img_url in imgurl_list:headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}# 调用get_ip函数,获取代理IPproxies = get_ip()# 每次发送请求换代理IP,获取图片,防止被封img_data = requests.get(url=img_url, headers=headers, proxies=proxies).content# 拼接图片存放地址和名字img_path = './小姐姐/' + str(n) + '.jpg'# 将图片写入指定位置with open(img_path, 'wb') as f:f.write(img_data)# 图片编号递增n = n + 1

5.5 调用主函数

这里我们可以设置需要爬取的页码:

if __name__ == '__main__':page_number = 10 # 爬取页数imgurl_list = [] # 存放图片链接# 1. 循环构建每页的链接for i in range(0,page_number+1):# 页数拼接url = f'https://www.moyublog.com/95-2-2-{i}.html'print(url)# 2. 获取图片链接get_imgurl_list(url,imgurl_list)# 3. 下载图片get_down_img(imgurl_list)

5.6 完整源码

注意:下面代理URL,看4.2教程提取 1G免费的代理IP 换成自己的API链接:

import requests  # python基础爬虫库
from lxml import etree  # 可以将网页转换为Elements对象
import time  # 防止爬取过快可以睡眠一秒
import osdef get_ip():url = "这里放你自己的API链接"while 1:try:r = requests.get(url, timeout=10)except:continueip = r.text.strip()if '请求过于频繁' in ip:print('IP请求频繁')time.sleep(1)continuebreakproxies = {'https': '%s' % ip}return proxiesdef get_imgurl_list(url,imgurl_list):"""获取图片链接"""# 请求头headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}# 发送请求response = requests.get(url=url, headers=headers)# 获取网页源码html_str = response.text# 将html字符串转换为etree对象方便后面使用xpath进行解析html_data = etree.HTML(html_str)# 利用xpath取到所有的li标签li_list = html_data.xpath("//ul[@class='clearfix']/li")# 打印一下li标签个数看是否和一页的电影个数对得上print(len(li_list))  # 输出20,没有问题for li in li_list:imgurl = li.xpath(".//a/img/@data-original")[0]print(imgurl)# 写入列表imgurl_list.append(imgurl)def get_down_img(imgurl_list):# 在当前路径下生成存储图片的文件夹os.mkdir("小姐姐")# 定义图片编号n = 0for img_url in imgurl_list:headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}# 调用get_ip函数,获取代理IPproxies = get_ip()# 每次发送请求换代理IP,获取图片,防止被封img_data = requests.get(url=img_url, proxies=proxies, headers=headers).content ## 拼接图片存放地址和名字img_path = './小姐姐/' + str(n) + '.jpg'# 将图片写入指定位置with open(img_path, 'wb') as f:f.write(img_data)# 图片编号递增n = n + 1if __name__ == '__main__':page_number = 10 # 爬取页数imgurl_list = [] # 存放图片链接# 1. 循环构建每页的链接for i in range(0,page_number+1):# 页数拼接url = f'https://www.moyublog.com/95-2-2-{i}.html'print(url)# 2. 获取图片链接get_imgurl_list(url,imgurl_list)# 3. 下载图片get_down_img(imgurl_list)

运行结果:

在这里插入图片描述

下载成功了没有报错,代理IP的质量还是不错的!!!

六、总结

代理IP对于爬虫是密不可分的,代理IP可以帮助爬虫隐藏真实IP地址,有需要代理IP的小伙伴可以试试易品HTTP家:点击免费试用

书籍推荐

客户留存数据分析与预测(数据科学与大数据技术)
在这里插入图片描述

对于任何依赖经常性收入和重复销售的企业来说,让客户保持活跃并持续购买是必不可少的。客户流失(或“流失”),这种代价高昂且令人沮丧的事情是可以预防的。通过使用本书中介绍的技术,你可以识别客户流失的预警信号,并学会在客户离开之前识别并挽留他们。

《客户留存数据分析与预测》向开发人员和数据科学家传授经过实践证明的技术与方法,可以在客户流失发生之前阻止其发生。本书包含很多来自现实中的示例,介绍如何将原始数据转换为可衡量的行为指标、计算客户生命周期价值,并使用人口统计数据改进客户流失预测。通过遵循 Zuora 首席数据科学家 Carl Gold 的方法,你将获得高客户留存率带来的优势。

主要内容:

● 计算流失指标

● 通过客户行为预测客户流失

● 使用客户细分策略减少客户流失

● 将客户流失分析技术应用于其他业务领域

● 使用人工智能技术进行准确的客户流失预测

京东地址:https://item.jd.com/13999686.html

这篇关于Python爬虫实战(七)——使用代理IP批量下载4K高清小姐姐图片(附上完整源码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/526632

相关文章

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统