【爬虫入门】爬取图片并保存在本地
一、分析页面
明确所需爬取的标签 -> 分析正则匹配
大家都知道,图片的标签为< img src="">,所以说根据标签想获取图片的网络URL是很容易的(r’src="(.\*?)"’),另外有个可以进行正则表达式建议的网站推荐([在线正则测试][Link 1])
二、代码实现
(1)引入库
requests 、re 、os 、SSL(有时可能存在认证问题)
import os
import re
import urllib
import requests
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
(2)请求响应获取页面内容并进行正则匹配
res = requests.get("https://www.nowcoder.com/tutorial/10029/ecbe986667be4d738956f3e105aebe7f")
res.encoding = "utf-8
content4 = re.findall(r'src="(.*?)"', res.text)
print(content4)
请求之后可以获取了一个url的列表
(3)根据URL列表进行逐一请求、创建文件下载
# 爬取下来的还有非网络url所以进行了处理
list = []
for item in content4:
if(item[0]=='h'):
list.append(item)
print(list)
i = 5
# 进行地址字符串的单独进行请求写入
for item in list:
print(item)
res = requests.get(item)
# open(filename, 'wb') 进行创建文件
with open("/Users/lyf/工程文件/PycharmProjects/Python学习/爬虫/批量下载图片/test/"+str(i)+".jpg", 'wb') as f:
f.write(res.content)
i = i+1
本文采用的f.write方式写入,初次之外,还可以采用urllib的urlretriev
urllib.request.urlretrieve(image_url, filename=filename)
然后看看效果
完整代码:
import os
import re
import urllib
import requests
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
res = requests.get("https://www.nowcoder.com/tutorial/10029/ecbe986667be4d738956f3e105aebe7f")
res.encoding = "utf-8"
print(res.text)
# 获取标签中的内容
# 标签中无参数如 <title> <h> <p> 一般未加属性
content1 = re.findall(r'<title>(.*?)</title>', res.text)
content2 = re.findall(r'<p>(.*?)</p>', res.text)
print(content1)
print(content2)
# 标签中含有参数 <a href=""> </a>
# <a.*?>(.*?)</a> .*?略去 完整超链接<a .*? href=.*?<\/a>
content3 = re.findall(r'<a.*?>(.*?)</a>', res.text)
print(content3)
# 爬取参数
# 爬取图片的地址
content4 = re.findall(r'src="(.*?)"', res.text)
print(content4)
list = []
for item in content4:
if(item[0]=='h'):
list.append(item)
print(list)
i = 5
# 进行地址字符串的单独进行请求写入
for item in list:
print(item)
res = requests.get(item)
# open(filename, 'wb') 进行创建文件
with open("/Users/lyf/工程文件/PycharmProjects/Python学习/爬虫/批量下载图片/test/"+str(i)+".jpg", 'wb') as f:
f.write(res.content)
i = i+1
其他注意事项:
(1)文件创建
采用open(filename,‘wb’)即可,刚开始还使用了mknod创建但是出现unpermmited的情况;
关于Python文件操作可以参考文件操作
还没有评论,来说两句吧...