整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Python爬虫实践:30行代码实现爬取网站图片,案

Python爬虫实践:30行代码实现爬取网站图片,案例分享篇

ython作为一门高级编程语言,它的定位是优雅、明确和简单。我学用python差不多一年时间了,用得最多的还是各类爬虫脚本:写过抓代理本机验证的脚本,写过论坛中自动登录自动发贴的脚本,写过自动收邮件的脚本,写过简单的验证码识别的脚本。

这些脚本有一个共性,都是和web相关的,总要用到获取链接的一些方法,故累积了不少爬虫抓站的经验,在此总结一下,那么以后做东西也就不用重复劳动了。

下面分享一个小案例,实现爬取网站里面的图片,包括源码及实现思路。

一、还原手工操作

所谓爬取页面图片,正常人手动操作可以分为两步:

1.打开页面

2.选中图片下载到指定文件夹

用代码实现的话可以节省掉每次下载图片的操作,运行代码实现批量下载。

二、设计代码实现

步骤一:导入相关库操作

import urllib #导入urllib包

import urllib.request#导入urllib包里的request方法

import re #导入re正则库

步骤二:定义解析页面 load_page()

这个函数实现打开传入的路径并将页面数据读取出来,实现代码,包括发送请求,打开页面,获取数据。

代码实现:

def load_page(url):

request=urllib.request.Request(url)#发送url请求

response=urllib.request.urlopen(request)#打开url网址

data=response.read()#读取页面数据

return data#返回页面数据

步骤三:定义get_image()函数

首先利用正则表达式匹配图片路径并存到数组中。

其次遍历数组实现图片下载操作。

代码实现:

def get_image(html):

regx=r'http://[\S]*jpg' #定义正则匹配公式

pattern=re.compile(regx)#构造匹配模式,速度更快

get_image=re.findall(pattern,repr(html))#repr()将内容转化为字符串形式,findall列表形式展示正则表达式匹配的结果

num=1 #定义变量控制循环

for img in get_image: #定义变量遍历数组

image=load_page(img)#将图片路径传入加载函数

with open('F:\photo\%s.jpg'%num,'wb') as fb: #以只读方式打开图片并命名

fb.write(image) #写入内容

print('正在下载第%s张图片'%num)

num=num+1 #变量递增

print("下载完成")

步骤四:函数调用

#调用函数

url='http://p.weather.com.cn/2019/10/3248439.shtml' #传入url路径

html=load_page(url)#加载页面

get_image(html)#图片下载

关键单词释义

如果第一次接触爬虫代码,相信有几个单词大家很陌生,为了方便记忆我把他们归类到一起加深印象,你也可以拿出一张白纸试着努力回忆着。

1.爬虫协议库ulrlib、urllib.request

2.正则匹配库rb

3.发送请求方法request()

4.打开页面方法urlopen()

5.读取数据方法read()

6.正则表达式-所有图片【\S】*.jpg

7.匹配模式定义compile()

8.查找匹配findall()

9.循环遍历语句 for a in b

10.打开文件 并命名 with open()... as fb

11.写到... write*()

12.输出语句 print()

到现在为止可以把我上面的代码在pycharm中打开尝试着运行起来吧!

最后,有2个报错信息汇总供参考:

1. module 'urllib' has no attribute 'requset'

定位到当行语句,发现request 单词拼写错误。

2. 没有报错,但是图片没有下载成功

重新检查代码,发现正则表达式写的有错误,记住是大写的S修改完之后看效果。

我是谁?

我是一名从事了多年软件测试的老测试员,今年年初我花了一个月整理了一份最适合2020年学习的软件测试学习干货,可以送给每一位对软件测试感兴趣的小伙伴,想要获取的可以关注我的头条号+私信:【测试】,即可免费获取。

内容首发于工粽号:程序员大澈,每日分享一段优质代码片段,欢迎关注和投稿!

大家好,我是大澈!

本文约 700+ 字,整篇阅读约需 1 分钟。

今天分享一段优质 HTML 代码片段,只需一行代码即可实现图片懒加载的处理。

老规矩,先阅读代码片段并思考,再看代码解析再思考,最后评论区留下你的见解!

<img src="example.jpg" alt="示例图片" loading="lazy">


分享原因

这段代码使用 HTML5 提供的一个非常简单的方法:为图片元素添加 loading="lazy" 属性,实现了图片的懒加载。

通过这种方式,我们可以让浏览器自动处理图片懒加载,无需额外的 js 脚本支持。

这对于不需要考虑兼容性的项目来说,实现图片的懒加载非常高效!

代码解析

1. src="example.jpg"

src属性指定了要显示的图片的文件路径,这里是example.jpg。

2. alt="示例图片"

alt属性提供了图片的替代文本描述。

当图片由于某种原因无法加载时,这个文本会显示出来,同时也有助于屏幕阅读器为视障用户描述图片内容。

3. loading="lazy"

loading属性设置为lazy表示延迟加载图片。

当设置了 loading="lazy" 时,浏览器会延迟加载图片,直到图片即将进入视口(用户即将看到的屏幕区域)。这意味着在页面加载的初始阶段,浏览器不会立即请求和加载这些图片,而是优先加载页面的关键内容,如文本和主要布局。

当用户滚动页面使得图片即将可见时,浏览器才会开始加载图片资源,从而减少了初始页面加载时的网络请求数量和数据量,加快了页面的呈现速度。

大多数现代浏览器都支持 loading="lazy" 属性,但在一些较旧的浏览器中可能不被支持。

对于不支持的浏览器,可以使用 JavaScript 库(如 lazysizes)来实现类似的懒加载效果。

网页设计中,添加图片并为其添加超链接是常见的需求。通过使用HTML,我们可以轻松实现这些功能。下面将详细介绍如何实用地添加图片,并为图片添加超链接。


html代码


首先,我们需要了解HTML中如何添加图片。在HTML中,我们使用`<img>`标签来插入图片。`<img>`标签有几个重要的属性,包括`src`、`alt`和`width`、`height`等。`src`属性用于指定图片的URL地址,`alt`属性用于提供图片无法加载时的替代文本,而`width`和`height`属性则用于设置图片的宽度和高度。

下面是一个简单的示例,展示如何在HTML中添加图片:

<img src="这里写图片地址,要带http协议,比如:https://www.chaojilu.com" alt="看不到图片,就显示这个文字" width="500" height="300">

在这个示例中,我们使用了`<img>`标签,并通过`src`属性指定了图片的URL地址。同时,我们还设置了`alt`属性以提供替代文本,并通过`width`和`height`属性设置了图片的尺寸。

接下来,我们来看如何为图片添加超链接。在HTML中,我们使用`<a>`标签来创建超链接。`<a>`标签的`href`属性用于指定链接的目标地址。为了将图片包含在超链接中,我们可以将`<img>`标签放置在`<a>`标签内部。

下面是一个示例,展示如何为图片添加超链接:

<a href="https://www.chaojilu.com">
<img src="image.jpg" alt="看不到图片,就显示这个文字"width="这里写宽度" height="高度">>
</a>

在这个示例中,我们将`<img>`标签放置在`<a>`标签内部,并通过`href`属性指定了链接的目标地址。当用户点击图片时,将会跳转到指定的网址。同时,我们还通过`alt`属性为图片提供了替代文本,以便在图片无法加载时为用户提供提示。

除了基本的添加图片和超链接功能外,我们还可以通过一些技巧来优化图片的显示和加载效果。例如,我们可以使用CSS样式来设置图片的边框、圆角等外观属性,提升页面的美观度。同时,我们还可以通过压缩图片文件大小、使用懒加载等技术来优化图片的加载速度,提高用户体验。

需要注意的是,在添加图片和超链接时,我们需要确保所使用的图片资源是合法且可访问的。避免使用未经授权或侵权的图片资源,以免引发法律问题。同时,我们还应该关注图片的版权和使用协议,确保在使用图片时遵守相关规定。

总之,通过使用HTML的`<img>`和`<a>`标签,我们可以轻松地在网页中添加图片并为图片添加超链接。通过合理设置属性和优化技巧,我们可以提升图片的显示效果和加载速度,为用户提供更好的浏览体验。

各位鹿友有什么不懂可以在评论区留言,咱们一起探讨学习。