用Python爬取图片

Python爬取图片 Python爬取妹子图片 今天我写的一个小爬虫是爬取妹子的图片,想必大家都喜欢,这个都懂。。。 利用python爬虫爬取图片,首先要进行安装python, 在(https://www.python.org/)进行下载python安装 安装python之后,在进行安装第三方库,requests,bs4,lxml这三个库。。。 在cmd中 进行安装pip install requests,输入后回车... 阅读详情

要说最美好的欲望莫过于看黑丝美眉。

一、技术路线

requests:网页请求
BeautifulSoup:解析html网页
re:正则表达式,提取html网页信息
os:保存文件

import re
import requests
import os
from bs4 import BeautifulSoup

二、获取网页信息

获取网页信息的固定格式,返回的字符串格式的网页内容,其中headers参数可模拟人为的操作,‘欺骗’网站不被发现

def getHtml(url):  #固定格式,获取html内容
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
    }  #模拟用户操作
    try:
        r = requests.get(url, headers=headers)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        print('网络状态错误')

三、网页爬取分析

右键单击图片区域,选择 审查元素 ,可以查看当前网页图片详情链接,我就满心欢喜的复制链接打开保存,看看效果,结果一张图片只有60几kb,这就是缩略图啊,不清晰,果断舍弃。。。

 <图片放不出来啊啊啊~~~>

 没有办法,只有点击找到详情页链接,再进行单独爬取。

空白右键,查看页面源代码,把刚刚复制的缩略图链接复制查找快速定位,分析所有图片详情页链接存在div标签,并且class=‘list’ 唯一,因此可以使用BeautifulSoup提取此标签。并且发现图片详情页链接在herf=后面(同时我们注意到有部分无效链接也在div标签中,观察它们异同,发现无效链接存在'https'字样,因此可在代码中依据此排出无效链接,对应第4条中的函数代码),只需提取出来再在前面加上网页首页链接即可打开,并且右键图片,‘审查元素’,复制链接下载的图片接近1M,表示是高清图片了,到这一步我们只需调用下载保存函数即可保存图片

四、网页详情页链接获取

首要目标是将每页的每个图片的详情页链接给爬取下来,为后续的高清图片爬取做准备,这里直接使用定义函数def getUrlList(url)

def getUrlList(url):  # 获取图片链接
    url_list = []  #存储每张图片的url,用于后续内容爬取
    demo = getHtml(url)
    soup = BeautifulSoup(demo,'html.parser')
    sp = soup.find_all('div', class_="list") #class='list'在全文唯一,因此作为锚,获取唯一的div标签;注意,这里的网页源代码是class,但是python为了和class(类)做区分,在最后面添加了_
    nls = re.findall(r'a href="(.*?)" rel="external nofollow"  rel="external nofollow" ', str(sp)) #用正则表达式提取链接
    for i in nls:
        if 'https' in i: #因所有无效链接中均含有'https'字符串,因此直接剔除无效链接(对应第3条的分析)
            continue
        url_list.append('http://www.netbian.com' + i) #在获取的链接中添加前缀,形成完整的有效链接
    return url_list

五、依据图片链接保存图片

通过上面获取了每个图片的详情页链接后,打开,右键图片审查元素,复制链接即可快速定位,然后保存图片

def fillPic(url,page):
    pic_url = getUrlList(url) #调用函数,获取当前页的所有图片详情页链接
    path = './美女'  # 保存路径
    for p in range(len(pic_url)):
        pic = getHtml(pic_url[p])
        soup = BeautifulSoup(pic, 'html.parser')
        psoup = soup.find('div', class_="pic") #class_="pic"作为锚,获取唯一div标签;注意,这里的网页源代码是class,但是python为了和class(类)做区分,在最后面添加了_
        picUrl = re.findall(r'src="(.*?)"', str(psoup))[0] #利用正则表达式获取详情图片链接,因为这里返回的是列表形式,所以取第一个元素(只有一个元素,就不用遍历的方式了)
        pic = requests.get(picUrl).content #打开图片链接,并以二进制形式返回(图片,声音,视频等要以二进制形式打开)
        image_name ='美女' + '第{}页'.format(page) + str(p+1) + '.jpg' #给图片预定名字
        image_path = path + '/' + image_name #定义图片保存的地址
        with open(image_path, 'wb') as f: #保存图片
            f.write(pic)
            print(image_name, '下载完毕!!!')

六、main()函数

经过前面的主体框架搭建完毕之后,对整个程序做一个前置化,直接上代码

在这里第1页的链接是
www.netbian.com/meinv/

第2页的链接是
www.netbian.com/meinv/index…

并且后续页面是在第2页的基础上仅改变最后的数字,因此在写代码的时候要注意区分第1页和后续页面的链接,分别做处理;同时在main()函数还增加了自定义爬取页数的功能,详见代码

<图片放不出来啊啊啊~~~>

def main():
    n = input('请输入要爬取的页数:')
    url = 'http://www.netbian.com/meinv/'  # 资源的首页,可根据自己的需求查看不同分类,自定义改变目录,爬取相应资源
    if not os.path.exists('./美女'):  # 如果不存在,创建文件目录
        os.mkdir('./美女/')
    page = 1
    fillPic(url, page)  # 爬取第一页,因为第1页和后续页的链接的区别,单独处理第一页的爬取
    if int(n) >= 2: #爬取第2页之后的资源
        ls = list(range(2, 1 + int(n)))
        url = 'http://www.netbian.com/meinv/'
        for i in ls: #用遍历的方法对输入的需求爬取的页面做分别爬取处理
            page = str(i)
            url_page = 'http://www.netbian.com/meinv/'
            url_page += 'index_' + page + '.htm' #获取第2页后的每页的详情链接
            fillPic(url, page) #调用fillPic()函数

七、完整代码

最后再调用main(),输入需要爬取的页数,即可开始爬取,完整代码如下

import re
import requests
import os
from bs4 import BeautifulSoup

def getHtml(url):  #固定格式,获取html内容
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
    }  #模拟用户操作
    try:
        r = requests.get(url, headers=headers)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        print('网络状态错误')

def getUrlList(url):  # 获取图片链接
    url_list = []  #存储每张图片的url,用于后续内容爬取
    demo = getHtml(url)
    soup = BeautifulSoup(demo,'html.parser')
    sp = soup.find_all('div', class_="list") #class='list'在全文唯一,因此作为锚,获取唯一的div标签;注意,这里的网页源代码是class,但是python为了和class(类)做区分,在最后面添加了_
    nls = re.findall(r'a href="(.*?)" rel="external nofollow"  rel="external nofollow" ', str(sp)) #用正则表达式提取链接
    for i in nls:
        if 'https' in i: #因所有无效链接中均含有'https'字符串,因此直接剔除无效链接(对应第3条的分析)
            continue
        url_list.append('http://www.netbian.com' + i) #在获取的链接中添加前缀,形成完整的有效链接
    return url_list

def fillPic(url,page):
    pic_url = getUrlList(url) #调用函数,获取当前页的所有图片详情页链接
    path = './美女'  # 保存路径
    for p in range(len(pic_url)):
        pic = getHtml(pic_url[p])
        soup = BeautifulSoup(pic, 'html.parser')
        psoup = soup.find('div', class_="pic") #class_="pic"作为锚,获取唯一div标签;注意,这里的网页源代码是class,但是python为了和class(类)做区分,在最后面添加了_
        picUrl = re.findall(r'src="(.*?)"', str(psoup))[0] #利用正则表达式获取详情图片链接,因为这里返回的是列表形式,所以取第一个元素(只有一个元素,就不用遍历的方式了)
        pic = requests.get(picUrl).content #打开图片链接,并以二进制形式返回(图片,声音,视频等要以二进制形式打开)
        image_name ='美女' + '第{}页'.format(page) + str(p+1) + '.jpg' #给图片预定名字
        image_path = path + '/' + image_name #定义图片保存的地址
        with open(image_path, 'wb') as f: #保存图片
            f.write(pic)
            print(image_name, '下载完毕!!!')

def main():
    n = input('请输入要爬取的页数:')
    url = 'http://www.netbian.com/meinv/'  # 资源的首页,可根据自己的需求查看不同分类,自定义改变目录,爬取相应资源
    if not os.path.exists('./美女'):  # 如果不存在,创建文件目录
        os.mkdir('./美女/')
    page = 1
    fillPic(url, page)  # 爬取第一页,因为第1页和后续页的链接的区别,单独处理第一页的爬取
    if int(n) >= 2: #爬取第2页之后的资源
        ls = list(range(2, 1 + int(n)))
        url = 'http://www.netbian.com/meinv/'
        for i in ls: #用遍历的方法对输入的需求爬取的页面做分别爬取处理
            page = str(i)
            url_page = 'http://www.netbian.com/meinv/'
            url_page += 'index_' + page + '.htm' #获取第2页后的每页的详情链接
            fillPic(url_page, page) #调用fillPic()函数

main()

最后

只看书不会进步,思考和实践才有成长,自学编程是一个比较枯燥的过程,如果没有正向反馈,学习的积极性很容易被打压下来,所以你应该积极参与到相关的技术圈子中去,尝试去解答力所能及的新手问题,向圈子中的大牛们寻求帮助,善于总结自己所学到的东西,分享给更多的人,记住,你不是一个人在战斗。

如果对Python感兴趣的话,可以试试我的学习方法以及相关的学习资料

对于0基础小白入门:

如果你是零基础小白,想快速入门Python是可以考虑培训的。

一方面是学习时间相对较短,学习内容更全面更集中。

Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述
温馨提示:篇幅有限,已打包文件夹,获取方式在“文末”!!!

二、Python必备开发工具

在这里插入图片描述

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

五、Python练习题

检查学习结果。
在这里插入图片描述

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

这份完整版的Python全套学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

Python——爬取图片 大家好,我是@xiaomeng小孟 欢迎大家阅读今天的文章————Python爬取水果图片(爬虫) 正文: #1.导入模块 import requests import re ##2.填写网址 并且 请求 #确定网址 url='https://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&word=%E6%B. 阅读详情

相关推荐

python爬取百度图片

python爬取百度图片 学习阶段 直接上源码,若想知其然知其所以然,请慢慢研究!! # coding=utf-8 import urllib import urllib.request from urllib.parse import quote import re import os headers = { "User-Agent": "Mozilla/5.0 (Window...

沧海一滴水 8904

Python应用开发——爬取网页图片

当我们需要从网页上面下载很多图片的时候,一个一个手动保存实在是太累人了。那么有没有批量下载的办法呢? 答案是有的,Python爬虫就可以完美的做到这一点,而且作为一个Python的初学者,我可以很负责任的告诉你,这门语言入门挺简单的,特别是对于那些有其他编程语言经验的人。

ShenZhen_zixian的博客 4万+

python爬虫之爬取贴吧图片

一、确定爬取流程 手动翻页观察URL结构,构造URL列表。 发送request请求包。 解析response回复包,提取所需数据。 存储数据。 1.1 观察URL,构造url列表 第一页:https://tieba.baidu.com/f?kw=图片&ie=utf-8&pn=0 第二页:https://tieba.baidu.com/f?kw=图片&ie=utf-...

迷风小白 5706

python爬取图片

转载:https://www.jianshu.com/p/11454866bc15 作为入门级别,首先就来学习下怎么爬取网站图片。只需要调用4个方法,即可轻松批量拿到网站图片。 下面对于每一步调用的方法进行详细说明(主要还是自己拿了别人代码之后遇到的坑) 第一步:获取网页的源代码 urllib.request.urlopen().read() 这个方法是获取到请求的这个URL所返...

XTY00的博客 1150

【Python网络爬虫】爬取网站图片实战

本文简要介绍如何利用Python爬取网站数据图片,仅供学习交流。

jackson_lingua的博客 1723

如何运用python爬虫爬取图片素材网站的图片?(附完整代码)

在当今数字化时代,高质量的图片资源对于设计师、开发者以及任何需要视觉素材的用户来说都至关重要。作为一个提供丰富壁纸资源的网站,涵盖了从普通高清到4K、5K甚至8K超高清的多种分辨率,满足了不同用户的需求。然而,手动下载这些壁纸不仅耗时,而且效率低下。因此,开发一个自动化爬虫程序,批量下载高质量壁纸,不仅能节省时间,还能提高工作效率。本文将详细介绍如何使用Python爬虫技术从爬取并保存高质量的电脑壁纸,同时确保整个过程符合网站的使用条款和法律规范。

2563

Python 爬虫批量爬取网页图片保存到本地

其实和爬取普通数据本质一样,不过我们直接爬取数据会直接返回,爬取图片需要处理成二进制数据保存成图片格式(.jpg,.png等)的数据文本。 现在贴一个url=https://img.ivsky.com/img/tupian/t/201008/05/bianxingjingang-001.jpg 请复制上面的url直接在某个浏览器打开,你会看到如下内容: 这就是通过网页访问到的该网站的该图片,于是我们可以直接利用requests模块,进行这个图片的请求,于是这个网站便会返回给我们该图片的数据,我们再把数据写

weixin_43918046的博客 4万+

用 Python 的 playwright 库 爬取 Pexels 网站的图片

想象一下,你正在做一份与鲜花相关的 PPT,或者你是一名电商运营,需要一批精美的花卉图片来装点你的商品页面。然而,每次手动去 Pexels 找图、下载、整理,简直太费时间了!🙄 有没有办法用 Python 实现自动下载呢?当然有!今天我们就来聊聊如何使用playwright,一个强大的 Python 爬虫库,来批量爬取 Pexels 网站上关于鲜花的高清图片,让你的办公效率直接起飞 🚀。了解了playwright的基本用法,包括如何打开网页、输入搜索内容、提取数据。

奔跑的蜗牛 1890

python怎么批量爬取图片_python批量爬取网络图片

上篇通过python爬取了一篇网络小说,初步了解了爬虫的四步流程,本文稍微扩展一点,试着从网页中爬取出多个图片,具体来看看:我们今天试着从下面图1的网页上将所有图片都爬取出来,放在一个指定的文件夹里。图1 目标网页还是按爬虫4流程:发出请求——获得网页——解析内容——保存内容1、发出请求1)找到网页地址:在网页上右键单击“审查元素”,弹窗里选中Network面板,从左侧name列表里逐个选择项目,...

weixin_35621342的博客 1925

废文xxxx

xxxxx

仲君Johnny的博客 5958

python爬取网页图片详解

文章目录什么是爬虫爬取网页图片实现步骤第一步:打开所操作的网站(任意一个网站)第二步:通过python访问这个网站第三步:点击F12查询相关信息第四步:爬取图片,下载到本地第五步:显示测试核心代码 什么是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。 原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。 爬取网页图片实现步骤 第一步:打开所操作的网站(任意一个网站) http://github.com/ 第二步:通

君莫笑的博客 1万+

Python用正则爬取图片

爬取的目标网站为:http://www.1ppt.com/beijing/ppt_beijing_1.html 爬取流程分析

haixingd的博客 1892

基恩士PLC编程避坑指南:局部变量@前缀的3个隐藏陷阱与实战解决方案

本文深入剖析了基恩士PLC编程中使用@前缀创建局部变量的三大隐藏陷阱,包括在线调试时的数据丢失、数据类型冲突以及子程序复用时的地址覆盖问题。针对每个陷阱,提供了预定义变量、强类型规范和基址参数传递等实战解决方案,帮助中高级工程师提升代码健壮性与可维护性。

weixin_29171087的博客 103

Python图片爬取

作者:刘旭濠 这个功能是在与别人讨论的时候发现的,一开始还不知道还可以这样玩,最后讨论才知道,还可以爬取这些东西,最后不仅弄了爬图片,还可以爬别的直接上代码吧 # 获取一个网址 pip install requests from requests import get # 判断文件类型的第三方包 pip install filetype from filetype import guess # 命...

刘旭濠的博客 847

倍福Beckhoff运动控制功能块实战解析:从MC_ReadActualPosition到MC_GearInVelo

本文深入解析倍福(Beckhoff)TwinCAT运动控制功能块,从基础的MC_ReadActualPosition、MC_Power等轴状态读取与使能操作,到MC_MoveAbsolute、MC_MoveRelative等单轴定位指令,并重点剖析了用于动态速度同步的核心功能块MC_GearInVelo在飞锯等场景的应用。文章结合实战经验,详细介绍了齿轮耦合、电子凸轮(MC_CamIn)等高级同步功能的参数配置、调试技巧及常见问题,旨在帮助工程师快速掌握倍福运动控制工具箱,实现复杂的同步工艺。

transformer2023的博客 984

计算机视觉三大顶会(ICCV/CVPR/ECCV)投稿指南与趋势解析

本文详细解析计算机视觉三大顶会(ICCV/CVPR/ECCV)的投稿指南与最新趋势。从基础认知到实战经验,涵盖时间线管理、选题策略、论文写作技巧及实验设计要点,帮助研究者提升投稿成功率。特别关注2024年技术融合、评估维度和伦理要求等前沿趋势,为计算机视觉领域的研究者提供实用建议。

weixin_29165725的博客 1851

Python爬取百度图片

Python爬取百度图片 import urllib.request import urllib.parse import re import os #添加header,referer是必须的User-Agent用来伪装浏览器 header=\ { ​ 'User-Agert':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537

Lystro的博客 775

Comsol&Matlab 亥姆霍兹共振消声器传递损失理论解与仿真解

当外界噪声以共振频率进入共振器时,共振器内的空气质量发生周期性的振动,从而减少或消除噪声。当特定频率的声波进入共振器时,共振器的空气质量会发生周期性的振动,从而实现对该频率的噪声的减弱或消除。5. 反射和吸收:共振器的几何形状和容积还可以影响共振器内空气振动的反射和吸收。然而,对于不同频率的噪声,需要相应调整共振器的参数以匹配新的共振频率。3. 腔体内的空气振动:当特定频率的声波进入共振器时,共振器内的空气质量会发生振动。2. 声波进入共振器:外界的声波通过共振器的颈部进入共振器的封闭空腔。

声学黑洞仿真工作室 4579

python怎么批量爬取图片_Python制作批量爬取网络图片的方法

Python制作批量爬取网络图片的方法发布时间:2020-11-17 11:14:24来源:亿速云阅读:86作者:小新这篇文章给大家分享的是有关Python制作批量爬取网络图片的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。Python爬虫爬图片需要什么?下面用两种方法制作批量爬取网络图片的方法:第一种方法:基于urllib实现要点如下:1.url_request ...

weixin_36130963的博客 3426

从入门到精通!Arduino 全栈开发深度指南

本文围绕 Arduino 开发撰写全攻略,从基础入门到高级应用层层递进。开篇介绍 Arduino 概念、优势及硬件家族,引导读者完成开发环境搭建与首个 LED 闪烁项目;深入讲解编程语法、I/O 控制及通信协议;详细阐述传感器、模块应用与调试优化技巧;最后以自定义库开发、低功耗设计等高级内容收尾,并给出综合项目案例与产品化思路。无论新手入门,还是开发者进阶,均可从中系统学习 Arduino 知识,掌握从理论到实践的全流程开发技能。

邓邓子的博客 2757

rk3568 适配以太网(mac 2 mac)

MDIO(Management Data Input/Output)是一种管理数据输入/输出协议,用于在以太网交换机和PHY(物理层收发器)之间进行通信。在Android中,MDIO总线用于控制网络接口的PHY芯片,例如通过MDIO总线访问PHY芯片的寄存器。这些寄存器包含了一些关于网络连接状态、链路速度和其他计算机网络相关信息的数据。MDIO总线通常由网络接口控制器(NIC)使用,以便在OS中管理PHY芯片。在Android设备上,MDIO总线通常由内核驱动程序管理,并且可以通过 /sys/bus/mdi

weixin_35723192的博客 2454
上一篇: 裸辞一个月的Python开发,接单一个月的成果
下一篇: 大学生学Python真的简单,但是现在我遭不住了
壹只小小码农
博客等级 码龄5年 8104粉丝 1333原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值