import urllib.request
import socket
import re
import sys
import os
from bs4 import BeautifulSoup
targetDir = r"E:\downLoads\github" #文件保存路径
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')
如果报找不到python no modle named bs4: