初学Python只需4步,爬取网站图片

news/2024/5/12 17:03:57/文章来源:https://blog.csdn.net/RRRJ97699/article/details/105921996

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

尤其是电商行业。

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

玩笑归玩笑,虽有夸张成分,但也不无道理。
作为入门级别,首先就来学习下怎么爬取网站图片。只需要调用4个方法,即可轻松批量拿到网站图片。

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

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

urllib.request.urlopen().read()

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

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

对Python感兴趣或者是正在学习的小伙伴,可以加入我们的Python学习扣qun:855408893 ,从0基础的python脚本到web开发、爬虫、django、数据挖掘数据分析等,0基础到项目实战的资料都有整理。送给每一位python的小伙伴!每晚分享一些学习的方法和需要注意的小细节,学习路线规划,利用编程赚外快。点击加入我们的 python学习圈

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

1.Non-ASCII character ‘\xe5’

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

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

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

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

第二步:过滤出图片URL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

eg.(windows)

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

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

eg.

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

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

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个图片。

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

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

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

运行结果:一堆图片

其他问题

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

报错:ImportError: No module named request

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

敲入安装命令:pip3 install requests

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

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

为解决初学者学习上的困难,专门建立的Python学习扣QUN:⑧⑤⑤-④零⑧-⑧⑨③从零基础开始到Python各领域的项目实战教程、开发工具与电子书籍。与你分享企业当下对于python人才需求及学好python的高效技巧,不停更新最新教程!点击加入我们的 python学习圈

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

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

相关文章

python 爬虫 ASMR网站在线音频的爬取(解决ajax动态加载网页)

#!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2020/12/17 13:32 # Author : huni # File : 18asmr爬取.py # Software: PyCharm import re import os import requests from lxml import etree import json if __name__ __main__:headers {referer: https:…

vfp控制excel使用sort_python:使用漏斗图展示的网站客户转化率(pyecharts)

大家好!今天来分享一下如何用Python工具来帮助我们制作成一张漏斗图。漏斗图适用于业务流程比较规范、周期长、环节多的流程分析,通过漏斗各环节业务数据的比较,能够直观地发现和说明问题所在。在网站分析中,通常用于转化率比较&a…

一行Python代码就可以下载任意网站视频,零基础小白也能轻松学会

对于Python爬虫很多人都不陌生,可以用它来批量下载文字、图片、视频等,其中涉及的知识点也是比较多的,但是Python中有一个方法,一行代码就能爬取任意网站上面的视频,只要你安装了Python环境就可以,哪怕是小…

Python爬取招聘网站数据,给学习、求职一点参考

1、项目背景 随着科技的飞速发展,数据呈现爆发式的增长,任何人都摆脱不了与数据打交道,社会对于“数据”方面的人才需求也在不断增大。因此了解当下企业究竟需要招聘什么样的人才?需要什么样的技能?不管是对于在校生&…

网站收录工具(php导航自动收录源码)_各大高质量网址站目录站网站收录提交入口资源...

在网站的SEO优化过程中,发布高质量的外链对于提升网站权重极为重要,其中分类目录网站是优质外链之一。如果能被高质量分类目录网站收录,对于网站来说就相当于增加了一条永久性的优质外部链接。在分类目录网站做外链时,大多数情况下…

正在从“vetur”获取代码操作_万能代码,功能炸裂,适用所有网站

平时上网,不同的小伙伴有不同的需求,比如视频网站下载视频,音乐网站下载音乐,文库网站下载文档,英文网页进行翻译等等。以往针对这些需要不同的软件才能完成,非常麻烦!今天“事儿哥”要给小伙伴…

忘记网站上的密码时怎么办?用Python如何快速帮你找回?

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 现如今浏览器可谓是五花八门,火狐、UC、360、QQ 这些浏览器不论美观还是所谓的安全方面都做的很符合我们需求。但如果你的工作与 IT …

python计算运动会某个参赛选手的得分。数据保存在文件中_python?日记:优化(SEO)狗学Python的日子(1)...

一名优秀的程序员,在穿越单行道时也会确认双向的来车情况——道格拉斯.林德(Doug Linder)大家可能好奇Python是什么东东,今天是小猿开始学习Python的第一天。周五在公司的时候收到了小猿刚买的第一本Python学习书籍(Py…

计算机科学与技术专业的门户网站,我校计算机科学与技术专业接受工程教育认证专家现场考查...

受中国工程教育专业认证协会委派,11月10至12日,以南京航空航天大学陈兵教授为组长的中国工程教育专业认证专家组一行4人来校,对计算机科学与技术专业进行工程教育认证现场考查。校党委书记刘新跃,校长魏先文,副校长顾明…

不外传的seo计划教程方案

2019独角兽企业重金招聘Python工程师标准>>> 不外传的seo计划教程方案 网站在上线之前,我们就应该要对网站进行一个合理的规划,并且制定出一份完美的SEO计划出来,而且要按照这份SEO计划一步一步地实施下去,从而&#x…

澎湃新闻网站全站新闻爬虫及各大新闻平台聚合爬虫发布

idea of startproject 对于 web 开发者而言,目前各大新闻门户网站,新浪新闻,百度新闻,腾讯新闻,澎湃新闻,头条新闻并没有提供稳定可用的 feed api。对于 nlper,缺乏足够的新闻语料数据集来供训…

scrapy爬取天天基金网站基金基础数据教程

最近周围朋友很多都在研究基金,或者想买入,或者想通过综合研究基金的重仓股来指导其在股市的行为,暂且搁置这些投资指导方式是否正确和稳妥,笔者便趁着周末给写了个小爬虫,将基金相关数据爬取下来并存储到了本地MYSQL&…

大型分布式网站架构技术总结

本文是学习大型分布式网站架构的技术总结。对架构一个高性能,高可用,可伸缩,可扩展的分布式网站进行了概要性描述,并给出一个架构参考。一部分为读书笔记,一部分是个人经验总结。对大型分布式网站架构有很好的参考价值…

读书笔记:大型网站技术架构-核心原理与案例分析

李智慧《大型网站技术架构-核心原理与案例分析》性能可用性伸缩性扩展性安全性总结这本书组织的很不错,语言精练,篇幅也不长,对网站架构的要点讲的狠清楚透彻,思路清晰。主要围绕架构的五个要点:性能、高可用、伸缩性、…

zabbix3.0 监控WEB网站性能

检测流程 1. 打开网站:如果http code为200,并且响应的html中包含Zabbix SIA表示打开成功(zabbix页面有这个标示) 2. 登陆后台:post用户名和密码到index.php,如果响应200,那表示post成功。并且通…

php实现多个网站session共享

做项目经常会用到,多个项目公用一个session的情况,由于涉及到session跨域,多个项目之间公用同一个session就会存在问题,解决这种问题的方法有很多,比如session存入数据库,Session写入缓存等等Session主要分…

Python爬虫采集CloudBlog网站的文章

---------------------------------------------------------------------------------------------[版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/76208980作者:朱培 I…

我竟然只花三天就搞定了网站微信授权系统!//Java、Java学系、快速学习、集中训练、Java零基础

添加微信即可报名训练班!(备注暗号999) 或者加QQ群我们一起交流:731892759免费领取三套价值3000元的Java资料1、Java自学超详细电子书2、自录优质网络直播课3、大厂Java面试题,优质项目练习题

让你三天学会网站微信授权登录系统开发//Java、系统开发、训练营、高效学习

用户体验优化是互联网产品非常重要一个环节,用户体验的好坏直接决定了产品在市场推广普及度。面对众多的选择,互联网的用户的耐心越来越低。一个网站如何能够通过快速登录绕过繁琐的注册环节直接让用户使用,这是决定用户是否会轻易流失的因素…

【壹加壹SEO技术博客】SEO优化过程中排名下降的原因...

【壹加壹SEO技术博客】SEO优化过程中排名下降的原因 1、网站上HTML标签的过度使用H1标签可以减少网站关键词排名的难度。但是很多网站管理员和朋友知道这种方法后,在自己的首页上无限制地添加H1标签,这不仅有不利于优化,还会导致网站过度优化…