python3的爬虫算法(2)--下载图片并保存到指定途径

来源:互联网 发布:多维分析 数据服务 编辑:程序博客网 时间:2024/06/05 11:06

知道了如何获取网页数据之后,我们来学习一下如何下载图片

import urllib.request
import socket
import re
import sys
import os
from bs4 import BeautifulSoup
targetDir = r"D:\temp\img"  #文件保存路径
name = 1
def destFile(path): 
    if not os.path.isdir(targetDir): 
        os.mkdir(targetDir) 
    pos = path.rindex('/') 
    t = os.path.join(targetDir, '%s.jpg'%name) 
    return t
'''
此处检查当前路径是否合法,并返回一个合法的路径以及文件名
介绍一下各个函数的用法:
os.path.isdir(url):判断url是否是一个合法路径,若是,返回true
os.mkdir(url):创建url路径
rindex(c)返回c在path中最后一次出现的位置
os.path.join:是在拼接路径的时候用的。举个例子,
os.path.join(“home”, "me", "mywork")
在Linux系统上会返回
“home/me/mywork"
在Windows系统上会返回
"home\me\mywork"
好处是可以根据系统自动选择正确的路径分隔符"/"或"\"
'''
if __name__ == '__main__':
    url = 'http://www.douban.com/'
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1;WOW64;rv:23.0) Gecko/20100101 Firefox/23.0'}
    req = urllib.request.Request(url=url, headers=headers)
    webpage = urllib.request.urlopen(req)#伪装成浏览器发送请求
    content = webpage.read()
    '''
    (调试阶段,忽略)
    fp = open('/temp/pa1.txt','wb')
    fp.write(content)
    fp.close()
    #print(type(content))
    #print(type(content))
    #print(content)
    soup = BeautifulSoup(content,'html.parser')
    links = soup.find_all('a')
    print(links)
   
    relink = '<a href="(.*)">(.*)</a>'
    info = re.findall(relink,content)
    #print(info)
    '''

    for link, t in set(re.findall(r'(https:[^s]*?(jpg|png|gif))', str(content))):    #set(re.findall(r'(https:[^s]*?(jpg|png|gif))', str(content))):将content转化为str,使用正则表达式匹配。
    #注意匹配时要根据考下来的html确定正则表达式
        print(link)
        name += 1
        try:
            urllib.request.urlretrieve(link,destFile(link))    #使用urlretrieve方法下载。使用请参照
        except:
            print('失败\n')
   
   

0 0
原创粉丝点击