python最新官网图片_初学Python-只需4步,爬取网站图片

news/2024/5/12 13:01:01/文章来源:https://blog.csdn.net/weixin_39687667/article/details/110320238

很多人学习Python很重要的一个原因是,可以很简单的把一个网站的数据爬下来。

尤其是做我们这一行,产品经理,电商行业。

领导:弄一个买卖游戏周边商品的交易APP出来。我:行,那我们卖什么呀?领导:看下友商卖什么我们就卖什么。我:好吧,那就爬点数据下来吧。

玩笑归玩笑,虽有夸张成分,但也不无道理。注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑容易放弃。为此小编建了个Python全栈免费答疑.裙 :七衣衣九起起巴而五(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还有最新Python教程项目可拿,,一起相互监督共同进步!

作为入门级别,首先就来学习下怎么爬取网站图片。只需要调用4个方法,即可轻松批量拿到网站图片。

webp

下面对于每一步调用的方法进行详细说明(主要还是自己拿了别人代码之后遇到的坑)

第一步:获取网页的源代码

urllib.request.urlopen().read()

这个方法是获取到请求的这个URL所返回的网页源代码信息数据,返回值是bytes类型时,要将其转换成utf-8才能正常显示在python程序中,所以还要调用decode()方法进行解码。

最终得到的就是平时我们编写或者查看的页面源代码了。

webp

这里可能会出现的报错信息:

1.Non-ASCII character '\xe5'

原因:这是编码的问题,Python的默认编码文件是用的ASCII码,而你的Python文件中使用了中文等非英语字符。

解决方法:在第一行添加 # -- coding: UTF-8 --

webp

2.如果爬取的网站是https协议的,需要在请求时会验证一次SSL证书

解决方法:全局加上以下代码

webp

第二步:过滤出图片URL

这一步至为关键,因为在一堆网页源代码中,要有效找出目标对象(图片URL)的特点(结构特征)才行。怎么找?

1.了解图片URL的html表达方式

学过html的同学都知道,图片的标签是,src属性定义其图片源路径。

2.使用正则表达式进行匹配

我也没有详细了解过正则表达式各个符号的含义,这里不展开讲。

这里的正则表达式的意思是,过滤出所有标签是,旗下的src属性,且属性值是以http开头jpg结尾的源代码。

每个网站的规则都不一样,不能直接套用代码。

简单例子,你要爬取的网站图片是png格式,直接拿代码去运行肯定是什么都抓不到的。

再例如,我在一开始设定的规则中是没有加上http开头的,结果抓到一些图片URL是相对路径的数据,导致后面是无法访问URL报错的。

3.将所有匹配规则的代码存入list里

re.compile() 根据包含的正则表达式的字符串创建模式对象(直接拿来用就好)

findall() 返回string中所有与pattern相匹配的全部字串,返回形式为数组

webp

我们试一下打印出来imglist是什么结果,看是不是就把所有匹配规则的内容全部找出来呢!

webp

第三步:定义图片保存路径

这一步看个人习惯,如果只是少数几张图片,就没有必要新建一个文件夹给图片都保存整理到一起。

不过如果是爬一个网站或一个网页相对数量级比较大的时候,建议还是全部整理到一个文件夹里面,好管理嘛。

“新建文件夹”这个基础的操作,就调用os.makedirs()方法即可。

webp

但是这里有3个注意的点:

1.新建文件夹,你是希望指定路径还是在当前路径下创建?

指定路径:很简单,直接把你想要创建文件夹的路径复制出来,加上新建文件夹的名称,作为参数直接写到方法里即可。

eg.(windows)

当前路径:先获取当前的目录,再拼接上新建文件夹的名称。

获取当前目录的方式是:os.getcwd()

eg.

webp

2.新建的文件夹是否已存在?

相同目录下不能有重名的文件/文件夹,如果直接创建的话,就会报错:文件已存在,无法创建。

webp

3.是否需要考虑windows和macOS的路径表述方式不一样?

注意一下,两个操作系统对于路径的表述方式是不一样的,尤其是指定路径,要输入正确的路径才能创建成功。

第四步:将图片URL保存到文件夹下

现在,图片URL已经存入到list里(见第2步)、保存图片的文件夹也有了,就可以将虚拟的图片url转换成真实的png或jpg文件。

urllib.request.urlretrieve(url, filename) 这个方法就是将远程数据下载到本地

url:远程或本地的url,对应这里就是要放图片URL了。

filename:保存的完整地方,即“路径+文件名”。如果未指定该参数,urllib会生成一个临时文件来保存数据。

这里要注意3个地方:

1.图片的文件名怎么生成?

建议使用最简单的方式来生成文件名:递增数字+图片后缀

这里就再次说明要新建文件夹的重要性,新建文件夹后,这个目录下是全新空白的,不用考虑生成的文件名会不会和原有文件名重复的问题。

递增数字:譬如说,第一张图片叫“1.jpg”,第二张图片叫“2.jpg”,如此类推。

2.一般网站爬下来的图片是多张的,如何批量处理?

这里也说明了,为什么要将抓取到的图片url存到list里面了。给list一个循环,每个url调用一次urllib.request.urlretrieve()方法,那就相当于每个url都保存为1个图片。

webp

3.报错:urllib2.HTTPError: HTTP Error 403: Forbidden

原因:一些网站是禁止爬虫做的处理

解决方法:可以在请求加上头信息,伪装成浏览器访问User-Agent(具体的信息可以通过火狐的FireBug插件查询),再去请求。

webp

运行结果:一堆图片

webp

其他问题

1.没有自动安装或导入第三方库,如urllib.request

报错:ImportError: No module named request

解决方法:安装第三方库,Mac机上在安装python3之后,系统是自动安装了pip3,所以我们只需要每次使用pip3即可安装(Windows请自行百度,注意区分Python2和Python3)

敲入安装命令:pip3 install requests

2.千万千万要注意windows和mac系统的路径表达方式不一样

因为我是两个操作系统切换着用,所以很头痛有这个问题,每次要记得改就是了,没技术难度。或者再加一层系统判断进行兼容就好了。

最后注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑容易放弃。为此小编建了个Python全栈免费答疑.裙 :七衣衣九起起巴而五(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还有最新Python教程项目可拿,,一起相互监督共同进步!

本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_757891.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dnf压爆服务器挑战网站,dnf手游压爆服务器挑战在哪里?地下城与勇士压爆挑战体验时间介绍[多图]...

dnf手游压爆服务器挑战是前两天很多玩家都在讨论的一个招募,关于这个招募小编这里也要给大家分享一些信息,招募之后的体验时间相信各位也都想要知道,那么下面就让小编给大家介绍一下吧,感兴趣的都可以来看看。dnf手游压爆服务器挑…

新闻网站项目静态页面--首页

外联CSS index.css: .ui.red.basic.segment.topmenu{height: 100px;padding-left:140px;padding-right: 140px;border-bottom: 1px solid rgb(189, 189, 189); } .ui.borderless.menu.container > .item > a{color: black;font-weight: bold; } .ui.horizontal.basic.seg…

百度seo排名规则_百度SEO排名优化哪家好?做SEO优化网站安全吗?

在竞争日益激烈的互联网平台中,每个企业都会使用有效的方法来优化网站,让自己的网站成为同行中的佼佼者,提升自己的知名度及影响力。然而,做SEO优化不像建站,可以随便找个模版套用就行,而是需要找专业的百度…

网站留言板防重复留言_如何为新网站做维护

SEOer们都知道网站运营是一件长期需要做的事,所以网站上线后也是需要进行维护的,企业搭建网站的目的是使我们的公司更好地显示其信息。那么该如何维护刚上线的网站呢?一、网站结构维护也许是因为网站刚刚上线,或者是由于网站建设者的技术能力…

centos7架设php网站,基于centos7搭建wordpress个人网站的方法详解

下面由WordPress技巧栏目给大家介绍基于centos7搭建wordpress个人网站的方法详解,希望对需要的朋友有所帮助!前言:随着计算机技术的普及,搞IT的越来越多,但是随着深入你会发现自己上了贼船,真的是一如IT深似…

access数据库应用期末考试_网站开发中常见的数据库类型有哪些?

在如今的互联网大背景下,网站开发成为了一个大热门,而网站开发离不开数据库的支持。对于开发人员来说,数据库日渐成为IT管理人员的得力助手。简单来讲,数据库(DataBase)就是一个长期存储在计算机内的、有组织的、有共享的、统一管…

html5.js不起作用,js+html onmouseover不管用

html使用onmouseover事件怎么设置鼠标移动到图片或 它们一样是因为: 都是鼠标落上去的时候触发的。 它们不一样是因为: onmousemove是javascript里面的,他可以触发js命令,但是hover做不到,hover只是css样式的类&#x…

火车头采集ajax网址的技巧,使用火车头等采集工具采集的网站怎么做SEO呢?

采集站通常都是通过软件进行采集文章的站点,没有任何原创文章,这种网站说实话是百度不喜欢的类型,为什么呢?搜索引擎为什么放着原始出处、权威网站不用,要把用户引导到你的新的采集网站上来?给你的采集站排…

java源代码众筹网站_【JavaWeb项目】一个众筹网站的开发(三)第一个网页

一、bootstrap本项目采用bootstrap3使用bootstrap三步:1.导入jQuery2.导入bootstrap自己的css样式3.导入bootstrap自己的js文件bootstrap定义了大量的样式库,要使用样式,只要将元素的class指定为样式库中的值。二、第一个网页index.jsp和css等…

实习僧网站爬取

遇到的问题:网站设置了简单的反爬虫规则:数字防爬,如:&#xf5e2这样的。 解决方法:直接获取0-9的编码加入字典以此替换。 代码如下: import requests,re,time,xlwt headers {User-Agent:Mozilla/5.0 (Wi…

用html制作一个网站的步骤,新手怎么做网页 新手如何制作一个网页

新手怎么做网页,网页好做吗?新手如何制作一个网页,网页制作步骤有哪些?网页更能体现出一个产品的功能与用途,如何使用自己计算机上的文本编辑器创建网页,然后在浏览器中查看网页。如果您有兴趣将您的网页发…

php投票网站管理员界面,php查询操作实现投票功能

本文实例为大家分享了php查询操作实现投票功能的代码,供大家参考,具体内容如下题目:解题方法汇总:方法一:1. 投票主页面:投票#list{width:400px;height:300px;}#jieguo{width:400px;height:300px;}.x{float…

如何用eclipse配置虚拟目录_wordpress建站如何用SMTP配置邮件通知

前提条件:你已经有了企业邮箱,相关文章请看:如何开通阿里云企业邮箱免费版https://loyseo.com/how-to-register-aliyun-free-enterprise-email/不建议使用主机商提供的邮箱,因为换主机商是比较常见的事情,因此导致的邮…

查询错误_入学派位查询系统现异常,北京西城区:网站代码逻辑错误,不影响派位结果...

图源图虫创意芥末堆讯 6月10日下午,北京市西城区教育考试中心就6月9日寄宿、九年一贯制和民办学校入学派位查询系统出现异常情况进行通告,称“派位系统正常,派位结果公正可靠“,查询结果显示异常与派位系统和派位结果并无关联。6月…

html 自动排序代码,SEO中常用HTML代码大全,及权重排序

做SEO必须要懂HTML,说的是一点都没错,不过其实是不需要全部都懂,最重点的你懂了会用,基本上都是事半功倍了。可以这么说一个不懂代码的优化人员不算是一个合格的好优化。下面就总结一下做优化,必须要懂得几个最重要的h…

网站服务器提权,网络安全系列之七 网站提权

上传了webshell之后,我们的目的是获取服务器的系统管理员权限,这也是******的最终目的。“H4ck Door”是一个很牛的大马,提供了很多功能,我比较喜欢的是执行cmd命令来提权。首先执行“net user”命令查看服务器有哪些用户&#xf…

【SEO】title / robots / description / canonical

1、title title,就是浏览器上显示的那些内容,不仅用户能看到,也能被搜索引擎检索到(搜索引擎在抓取网页时,最先读取的就是网页标题,所以title是否正确设置极其重要。 1)title一般不超过80个字符…

SQL在线练习网站

1、地址是:http://sqlfiddle.com/ 2、http://zh.sqlzoo.net/wiki/SELECT_basics/zh

网站请求流程

Apache 能够完成的事情过于简单,无外乎就是找到你请求对应的文件 → 读取文件 → 将文件内容响应给客户端浏览器(文件原封不动的给你)。无法满足让网页内容动起来(随着数据动态变化)的需求。 于是乎,就有人…

在安卓手机中调试网站

尝试在手机上 去进行项目的预览和测试 要保证自己的手机可以正常运行;要保证 手机 和 开发项目的电脑 处于同一个 WIFI 环境中,也就是说手机可以访问到电脑的 IP打开自己的 项目中 package.json 文件,在 dev 脚本中,添加一个 --h…