python 爬取网页图片

「记录贴」记录作为爬虫的第一次,Python3.6成功爬取网页图片

小编,近期学习了一些python的凤毛菱角,就开始迫不及待的试试水,写了一个爬取百度贴吧单页图片的程序。以下是战果。特发帖记录一下。(小编用的python3.6版本)

效果:

自动爬取并下载图片到本地:

「记录贴」记录作为爬虫的第一次,Python3.6成功爬取网页图片

代码:

其实很简单,我们直接看下整体的代码:

「记录贴」记录作为爬虫的第一次,Python3.6成功爬取网页图片

解析:

第一行的utf-8是为了支持中文。

这里我们导入了两个库,分别是 urllib.request 和 re。request是用来进行 url 网络请求的,而 re 是一个正则表达式匹配的库。这里我们要先对网站进行模拟请求,然后找到网站中的图片进行下载。

第一个方法:getHtml。

用来抓取网页源代码。想查看源代码的同学可以在末尾加入“print(html)”即可。也可以打开网页右键—>图片->审查元素即可查看到网页源码。

「记录贴」记录作为爬虫的第一次,Python3.6成功爬取网页图片

方法二:getImg

在这个方法中,我们设置了一个正则表达式,用来在网页源代码中找到图片的资源路径,这个正则表达式要根据不同的网站去具体设置,比如我爬取的这个网站,图片对应的源代码是这样的: reg = r’src=”(http.*?.jpg)”‘,获取到网页图片的链接。之后要做的就是下载了。

方法三:DL

最后一步就是下载图片,这里我们用 for 循环,将图片资源路径中的每个图片,使用 request 库的 urlretrieve 函数来下载图片,这个函数其实可以接受很多参数,这里我们设置了要下载的图片资源路径和要命名的名字(我们使用一个变量num来对每个图片依次命名为1,2…),还可以设置下载路径、用来显示下载进度的回调函数等等。如果不设置下载路径默认会下载到代码文件当前所在的文件夹。

源代码:

# -*- coding: utf-8 -*-

“””

Created on Tue Sep 26 21:47:02 2017

@author: leiji

“””

import re

import urllib.request

def getHtml(url):

page = urllib.request.urlopen(url)

html = page.read()

return html

def getImg(html):

reg = r’src=”(http.*?.jpg)”‘

imgre = re.compile(reg)

html=html.decode(‘utf-8’)#python3

imglist = re.findall(imgre,html)

return imglist

num = 1

def Dl(title):

for num in range(1,len(title)):

urllib.request.urlretrieve(title[num],’%s.jpg’ % num)

num += 1

html = getHtml(“***/p/2957576690?fr=good”)

title = getImg(html)

Dl(title)

本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(0)
上一篇 2023年2月25日 上午11:28
下一篇 2023年2月25日 下午12:10

相关推荐