20193304 2020-2021-2 《Python程序设计》实验四报告

20193304  2020-2021-2 《Python程序设计》实验四报告

课程:《Python程序设计》
班级: 1933
姓名: 白宁
学号:20193304
实验教师:王志强
实验日期:2021年6月14日
必修/选修: 公选课

1.实验内容:爬取并下载网页图片

2.实验过程及结果:

1)导入库:

#coding = utf-8
import urllib
import re

utf-8是为了支持中文。

urllib 用来进行 url 网络请求。

re 是一个正则表达式匹配的库。

要先对网站进行模拟请求,然后找到网站中的图片进行下载。

2)请求网站:

def getHtml(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html

getHtml就是用来模拟浏览器访问网站的,参数 url 是要访问的网站链接,这里我们在下面的变量 html 处调用了这个方法,其访问的 url 是要下载图片的网站。

先用了 urllib 库的 urlopen 方法来打开网站,然后通过 read 方法来获取网站的源代码,最后返回了读取到的网站源代码。

3)找到图片:

20193304  2020-2021-2 《Python程序设计》实验四报告

def getImg(html):
    reg = 'src="(.+?\.jpg)" alt='
    imgre = re.compile(reg)
    imglist = re.findall(imgre, html)
    x = 0
    for imgurl in imglist:
        urllib.urlretrieve(imgurl, '%s.jpg' % x)
        x+=1
    return imglist

使用 getImg 方法。在这个方法中,我们设置了一个正则表达式,用来在网页源代码中找到图片的资源路径。

 用 re 库的 compile 函数将正则表达式转换成正则表达式对象,然后使用 findall 函数寻找 html 网页源代码中包含的匹配 imgre 的所有内容,返回一个序列。我们可以输出这个序列,可以看到大量图片资源路径组成的一个序列,如果没爬取到,就是个空序列了。

4)下载图片

最后一步就是下载图片,这里我们用 for 循环,将图片资源路径中的每个图片,使用 urllib 库的 urlretrieve 函数来下载图片。

20193304  2020-2021-2 《Python程序设计》实验四报告

 

20193304  2020-2021-2 《Python程序设计》实验四报告3.实验过程中遇到的问题和解决过程
- 问题1:多个网站没有成功爬下图片

- 原因:1)反爬虫2)每张图片的元素不固定

 4.实验心得:

正则表达式学完以后没有怎么使用,这次使用了觉得很强大很方便。

这次实验查了很多资料,也发现了许多有意思的爬虫,像爬取在线小说、图片、数据……贴近生活又十分实用,因为我很喜欢看小说,而很多在线小说的广告很烦人,就想做一个爬取小说的实验,大约是版本较低的原因,总有一个地方报错,找问题也花了较长时间,就先放一下,假期有时间了下一个py3,再做一些感兴趣的尝试。

相比之前学习的C,python给我的感觉是:有强大的库、写起来方便实用,更贴近生活。

最后,感谢志强老师这学期的精彩课堂,每次的三节课的时间都过得很快并且收获满满。(鞠躬)

5.参考资料:https://blog.csdn.net/cloudox_/article/details/53465923

 

 

上一篇:Python调用有道api进行翻译


下一篇:Python入门程序-