用python爬取网页图片
首先导入两个库
import requests
import re
导入方法,在终端依次输入以下指令
pip install requeste
pip install re
废话不多说,上代码
import requests
import re
def getHtml(url):
try:
# 获取网页
r = requests.get(url)
# 判断返回的Response类型状态是不是200。如果是200,他将表示返回的内容是正确的,如果不是200,就会产生一个HttpError的异常
r.raise_for_status()
# 编码类型
r.encoding = 'utf-8'
# 打印趴下来的网页
# print(r.text)
return r.text
except:
# 抛出异常
return "error"
# 以逐浪小说网为例,里面图片不多,比较适合做示范
def getImg(html):
# 正则表达式匹配趴下来的网页中以http开头,以html结尾的内容
reg = r'src="(http.+?\.jpg)"'
# 把reg中的内容转成一个列表
imglist = re.findall(reg, html)
i = 0
# 这里做的判断主要是因为提取出来的img地址中的第12-56有两个地址,产生了异常,无法下载图片,不理解的话可以在打印imglist看一下
listi = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 57, 58, 59, 60, 61]
for url in imglist:
if i in listi:
# 在列表中的的图片地址是正常的
response = requests.get(url)
i = i + 1
else:
# 不在列表中的图片地址是异常的,所以要进行截取
reg1 = imglist[i]
reg2 = reg1[46:]
response = requests.get(reg2)
i = i + 1
# 打开文件夹,把图片存进去
with open(".\\wb\\" + str(i) + ".jpg", "wb") as fd:
fd.write(response.content)
print('图片', i, "保存成功\n")
html = getHtml("http://www.zhulang.com/")
getImg(html)
注意:
1、爬取的图片地址有时候会有问题,所以如果图片不展示的话,可以看看是不是地址错误
2、有些网页需要添加请求头或者其他一些参数的,可以自行去了解
3、有些网站设置了反爬虫的话,暂时还不清楚怎么解决