让我来详细讲解一下“Python抓取网站的图片并下载到本地的方法”的完整攻略。
步骤一:导入依赖库
我们需要导入requests
、os
和re
三个依赖库,确保能够正常进行HTTP请求、保存图片文件和正则匹配字符串:
import requests
import os
import re
步骤二:定位图片链接
将要抓取的图片所在的页面URL,使用requests
库向该URL发送HTTP请求,并通过正则表达式匹配其中的图片链接。举个栗子,假设要抓取的页面URL是https://www.example.com
,图片链接是以.jpg
结尾的,则可以使用以下代码:
url = 'https://www.example.com'
response = requests.get(url)
pattern = re.compile(r'"(https?://[^"]+\.(jpg))"')
links = re.findall(pattern, response.text)
这样,links
就是一个列表,其中保存了所有图片链接的地址。
步骤三:下载图片
我们要把抓取到的图片下载到本地。为了确保不重复下载,我们可以在本地建立同样的目录结构,并以图片名称作为文件名进行保存。具体实现代码如下:
for link in links:
src = link[0]
filename = src.split('/')[-1]
directory = './images/' + '/'.join(src.split('/')[3:-1])
if not os.path.exists(directory):
os.makedirs(directory)
with open(directory+'/'+filename, 'wb') as f:
f.write(requests.get(src).content)
这段代码会遍历所有抓取到的图片链接,分别下载并保存到以图片链接路径为名的文件夹内。如果文件夹不存在,就新建一个。
为了方便用户使用,我们可以将上述代码封装在一个函数中,并在函数中返回本次抓取的图片数量,示例如下:
def download_images(url):
response = requests.get(url)
pattern = re.compile(r'"(https?://[^"]+\.(jpg|jpeg|png|gif))"')
links = re.findall(pattern, response.text)
count = 0
for link in links:
src = link[0]
filename = src.split('/')[-1]
directory = './images/' + '/'.join(src.split('/')[3:-1])
if not os.path.exists(directory):
os.makedirs(directory)
if not os.path.exists(directory+'/'+filename):
with open(directory+'/'+filename, 'wb') as f:
f.write(requests.get(src).content)
count += 1
return count
以上就是“Python抓取网站的图片并下载到本地的方法”的完整攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python抓取网站的图片并下载到本地的方法 - Python技术站