彼岸图网站里有大量的高清图片素材和壁纸,并且可以免费下载,读者也可以根据自己需要爬取其他类型图片,方法是类似的,本文通过python爬虫批量下载网站里的高清美女图片,熟悉python写爬虫的基本方法:发送请求、获取响应、解析并提取数据、保存到本地。

目标url:http://pic.netbian.com/4kmeinv/index.html

1. 爬取一页的图片

正则匹配提取图片数据

网页源代码部分截图如下:

重新设置GBK编码解决了乱码问题

代码实现:

import requests
import re# 设置保存路径
path = r'D:\test\picture_1\ '
# 目标url
url = "http://pic.netbian.com/4kmeinv/index.html"
# 伪装请求头  防止被反爬
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1","Referer": "http://pic.netbian.com/4kmeinv/index.html"
}# 发送请求  获取响应
response = requests.get(url, headers=headers)
# 打印网页源代码来看  乱码   重新设置编码解决编码问题
# 内容正常显示  便于之后提取数据
response.encoding = 'GBK'# 正则匹配提取想要的数据  得到图片链接和名称
img_info = re.findall('img src="(.*?)" alt="(.*?)" /', response.text)for src, name in img_info:img_url = 'http://pic.netbian.com' + src   # 加上 'http://pic.netbian.com'才是真正的图片urlimg_content = requests.get(img_url, headers=headers).contentimg_name = name + '.jpg'with open(path + img_name, 'wb') as f:     # 图片保存到本地print(f"正在为您下载图片:{img_name}")f.write(img_content)

Xpath定位提取图片数据

检查分析网页可以找到图片的链接和名称的Xpath路径,写出xpath表达式定位提取出想要的图片数据,但得到的每个图片的src前面需要都加上 ‘http://pic.netbian.com’ 得到的才是图片真正的url,可以用列表推导式一行代码实现。

代码实现:

import requests
from lxml import etree# 设置保存路径
path = r'D:\test\picture_1\ '
# 目标url
url = "http://pic.netbian.com/4kmeinv/index.html"
# 伪装请求头  防止被反爬
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1","Referer": "http://pic.netbian.com/4kmeinv/index.html"
}# 发送请求  获取响应
response = requests.get(url, headers=headers)
# 打印网页源代码来看  乱码   重新设置编码解决编码问题
# 内容正常显示  便于之后提取数据
response.encoding = 'GBK'
html = etree.HTML(response.text)
# xpath定位提取想要的数据  得到图片链接和名称
img_src = html.xpath('//ul[@class="clearfix"]/li/a/img/@src')
# 列表推导式   得到真正的图片url
img_src = ['http://pic.netbian.com' + x for x in img_src]
img_alt = html.xpath('//ul[@class="clearfix"]/li/a/img/@alt')for src, name in zip(img_src, img_alt):img_content = requests.get(src, headers=headers).contentimg_name = name + '.jpg'with open(path + img_name, 'wb') as f:   # 图片保存到本地print(f"正在为您下载图片:{img_name}")f.write(img_content)

2.翻页爬取,实现批量下载

手动翻页分析规律
第一页:http://pic.netbian.com/4kmeinv/index.html
第二页:http://pic.netbian.com/4kmeinv/index_2.html
第三页:http://pic.netbian.com/4kmeinv/index_3.html
最后一页:http://pic.netbian.com/4kmeinv/index_161.html
分析发现除第一页比较特殊,之后的页面都有规律,可以用列表推导式生成url列表,遍历url列表里的链接,进行请求,可实现翻页爬取图片。

单线程版

import requests
from lxml import etree
import datetime
import time# 设置保存路径
path = r'D:\test\picture_1\ '
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1","Referer": "http://pic.netbian.com/4kmeinv/index.html"
}
start = datetime.datetime.now()def get_img(urls):for url in urls:# 发送请求  获取响应response = requests.get(url, headers=headers)# 打印网页源代码来看  乱码   重新设置编码解决编码问题# 内容正常显示  便于之后提取数据response.encoding = 'GBK'html = etree.HTML(response.text)# xpath定位提取想要的数据  得到图片链接和名称img_src = html.xpath('//ul[@class="clearfix"]/li/a/img/@src')# 列表推导式   得到真正的图片urlimg_src = ['http://pic.netbian.com' + x for x in img_src]img_alt = html.xpath('//ul[@class="clearfix"]/li/a/img/@alt')for src, name in zip(img_src, img_alt):img_content = requests.get(src, headers=headers).contentimg_name = name + '.jpg'with open(path + img_name, 'wb') as f:  # 图片保存到本地# print(f"正在为您下载图片:{img_name}")f.write(img_content)time.sleep(1)def main():# 要请求的url列表url_list = ['http://pic.netbian.com/4kmeinv/index.html'] + [f'http://pic.netbian.com/4kmeinv/index_{i}.html' for i in range(2, 11)]get_img(url_list)delta = (datetime.datetime.now() - start).total_seconds()print(f"抓取10页图片用时:{delta}s")if __name__ == '__main__':main()

程序运行成功,抓取了10页的图片,共210张,用时63.682837s。

多线程版

import requests
from lxml import etree
import datetime
import time
import random
from concurrent.futures import ThreadPoolExecutor# 设置保存路径
path = r'D:\test\picture_1\ '
user_agent = ["Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6","Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1","Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"]
start = datetime.datetime.now()def get_img(url):headers = {"User-Agent": random.choice(user_agent),"Referer": "http://pic.netbian.com/4kmeinv/index.html"}# 发送请求  获取响应response = requests.get(url, headers=headers)# 打印网页源代码来看  乱码   重新设置编码解决编码问题# 内容正常显示  便于之后提取数据response.encoding = 'GBK'html = etree.HTML(response.text)# xpath定位提取想要的数据  得到图片链接和名称img_src = html.xpath('//ul[@class="clearfix"]/li/a/img/@src')# 列表推导式   得到真正的图片urlimg_src = ['http://pic.netbian.com' + x for x in img_src]img_alt = html.xpath('//ul[@class="clearfix"]/li/a/img/@alt')for src, name in zip(img_src, img_alt):img_content = requests.get(src, headers=headers).contentimg_name = name + '.jpg'with open(path + img_name, 'wb') as f:  # 图片保存到本地# print(f"正在为您下载图片:{img_name}")f.write(img_content)time.sleep(random.randint(1, 2))def main():# 要请求的url列表url_list = ['http://pic.netbian.com/4kmeinv/index.html'] + [f'http://pic.netbian.com/4kmeinv/index_{i}.html' for i in range(2, 51)]with ThreadPoolExecutor(max_workers=6) as executor:executor.map(get_img, url_list)delta = (datetime.datetime.now() - start).total_seconds()print(f"爬取50页图片用时:{delta}s")if __name__ == '__main__':main()

程序运行成功,抓取了50页图片,共1047张,用时56.71979s。开多线程大大提高的爬取数据的效率。

最终成果如下:

3. 其他说明

  • 本文仅用于python爬虫知识交流,勿作其他用途,违者后果自负。
  • 不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。

这个案例你爱了吗?源码获取加群:1136192749

原作者:叶庭云   如有侵权联系删除

Python爬虫实战批量下载高清美女图片,男生最爱的案例吧!相关推荐

  1. python利用多线程批量下载高清美女图片(350秒下载近3600张1.2个G的照片,地址可变)

    目录 第一章.前言 1.1.实现的效果: 1.2.需要用到的库: 第二章.代码分块讲解 2.1.对象的定义和初始化 2.2.方法1和2获取所有图集链接 2.2.1. 对应网站结构 2.2.2 .相应代 ...

  2. 爬虫案例:利用python爬虫关键词批量下载高清大图

    环境: python3+pycharm+requests+re+BeatifulSoup+json 这个确实也属实有一些勉强,不少童鞋私信问我有木有 下载大图 的源码,我说可能会有,现在分享给大家. ...

  3. 利用python爬虫关键词批量下载高清大图!

    前言 在上一篇 写文章没高质量配图?python爬虫绕过限制一键搜索下载图虫创意图片 !中,我们在未登录的情况下实现了图虫创意 无水印高清小图 的批量下载.虽然小图能够在一些移动端可能展示的还行,但是 ...

  4. 爬虫python创意_爬虫案例:利用python爬虫关键词批量下载高清大图

    环境: python3+pycharm+requests+re+BeatifulSoup+json 这个确实也属实有一些勉强,不少童鞋私信问我有木有 下载大图 的源码,我说可能会有,现在分享给大家. ...

  5. Python爬虫实战 — — Wallhaven壁纸高清原图下载

    Python爬虫实战 - - Wallhaven壁纸高清原图下载 一.网站分析 二.可行性分析 三.代码分析 1.所需第三方库与请求头 2.获取当前页的所有壁纸图像链接 3.根据图像链接存储本地 4. ...

  6. 【Python爬虫】Python request 实现壁纸爬虫 一键批量下载高清壁纸

    简介 本项目是本人检验python爬虫学习成果的一个小项目,简陋但能用,对壁纸有不同需求的可自行更改搜索参数,希望能帮到爬虫爱好者或者壁纸爱好者,爬取的所有图片均来源于wallhaven,仅用于个人欣 ...

  7. 【第1篇】Python爬虫实战-王者荣耀高清壁纸下载

    目标网址:https://pvp.qq.com/web201605/wallpaper.shtml 目录 1.页面分析 2.程序源码 3.结果展示 1.页面分析 通过F12打开浏览器控制台,刷新一下页 ...

  8. Python爬虫实例 wallhaven网站高清壁纸爬取。

    文章目录 Python爬虫实例 wallhaven网站高清壁纸爬取 一.数据请求 1.分析网页源码 2.全网页获取 二.数据处理 1.提取原图所在网页链接 2.获取高清图片地址及title 三.下载图 ...

  9. python爬虫实现批量下载百度图片

    今天和小伙伴们合作一个小项目,需要用到景点图片作为数据源,在百度上搜索了一些图片,感觉一个一个手动保存太过麻烦,于是想到用爬虫来下载图片. 本次代码用到了下列一些python模块,需要预先安装Beau ...

最新文章

  1. 《趣学Python编程》——2.3 使用变量
  2. Qt实现FlatUI样式(开源)
  3. SAP CRM WebClient UI Text 可编辑与否的控制逻辑
  4. 不同编程语言能耗不同?看这27种语言对比!
  5. python制作自动回复脚本_python itchat实现微信自动回复的示例代码
  6. java 简单事件的使用,如何正确的使用Java事件通知(1)
  7. 计算机时代 英语,雅思8分范文:计算机时代教师角色 【出国英语】
  8. 在 F5 LTM 上配置数据包过滤
  9. 最新手机芯片AI跑分出炉:高通、联发科力压华为
  10. [sublime] sublime 实现Markdown编辑器
  11. jsp 图形验证码 imageutils_java_jsp:java:生成图形验证码(纯数字)
  12. 百度安装php环境,Centos下安装类百度文库环境
  13. markdown mysql高亮_博客园里Markdown支持高亮显示的语言
  14. 沃嘉工业机器人及自动化_智能制造和工业自动化的新宠儿——工业机器人
  15. Graphics.DrawLine 方法
  16. 计算机二级考试c语言考试注意事项,计算机二级MS Office、ACCESS、二级C语言考试的注意事项...
  17. vue创建项目卡住不动,vue create project卡住不动 解决办法
  18. gis 六边形网格_ArcGIS中的奇技淫巧(Ⅱ)—蜂巢网格图
  19. 第三方支付平台如何对接?
  20. Linux究竟值多少钱?

热门文章

  1. asterisk帮助与国内论坛
  2. 一个word文档中,多个表格的批量调整(根据窗口调整表格和添加表格水平线)
  3. ASP.Net基本控件之TextBox控件
  4. 思维模型 波特五力模型
  5. Jfreechart中文API和属性详解
  6. [Python]B站学习笔记---列表(List)
  7. 【操作系统】银行家算法:算法分析 + 运行结果 + 完整代码
  8. 乐乐语音挑战苹果siri,你赌谁赢?
  9. ComponentName使用
  10. 【C4D教程】教你怎么做出好看的玻璃丝带渲染