# -*- coding: utf-8 -*-
"""
Created on Sat Jul 21 14:35:57 2018
@author: Administrator
"""
import re
import urllib
from bs4 import BeautifulSoup
import csv
rawurl=r'https://e4ftl01.cr.usgs.gov/MOLT/MOD11A2.006/2005.09.30/' #20050930数据下载页面链接
file=r'G:\MOD13A3_NDVI\DATA' #链接存储位置
t=[]
urls=[]
U=[]
PP=[]
content = urllib.request.urlopen(rawurl).read().decode('ascii') #获取页面的HTML
soup = BeautifulSoup(content, 'lxml')
print(soup.prettify())
s=[soup.find_all('a')]
#print(soup.find_all('a'))
#使用正则表达匹配下载需要的研究区对应行号的Modis数据, 如下为 h2304,h2305等
reinfo=re.compile(r'MOD11A2[0-9a-zA-Z\_.]{10}h23v04[0-9a-zA-Z\_.]{19}hdf$') #正则表达匹配
reinfo1=re.compile(r'MOD11A2[0-9a-zA-Z\_.]{10}h23v05[0-9a-zA-Z\_.]{19}hdf$') #正则表达匹配
reinfo2=re.compile(r'MOD11A2[0-9a-zA-Z\_.]{10}h24v04[0-9a-zA-Z\_.]{19}hdf$') #正则表达匹配
reinfo3=re.compile(r'MOD11A2[0-9a-zA-Z\_.]{10}h24v05[0-9a-zA-Z\_.]{19}hdf$') #正则表达匹配
reinfo4=re.compile(r'MOD11A2[0-9a-zA-Z\_.]{10}h25v04[0-9a-zA-Z\_.]{19}hdf$') #正则表达匹配
reinfo5=re.compile(r'MOD11A2[0-9a-zA-Z\_.]{10}h25v05[0-9a-zA-Z\_.]{19}hdf$') #正则表达匹配
print (soup.select('a'))
t=soup.select('a')
for i in t:
urls.append(i.get('href')) #获取href后的链接
for j in urls:
if re.findall(reinfo,j) or re.findall(reinfo1,j) or re.findall(reinfo2,j) or re.findall(reinfo3,j) or re.findall(reinfo4,j) or re.findall(reinfo5,j):
U.append(j)
URLdata=open(r'G:\MOD11A2_LandSurfaceTem\URLTEM.txt','w') #新建用于保存链接的TXT
writer = csv.writer(URLdata)
M=list(set(U))
for n in M:
downURL=rawurl+n
PP.append(downURL)
print(PP)
for P in PP:
URLdata.writelines(P+'\n') #将链接写入TXT
URLdata.close()
可在代码后添加下载保存语句,循环存储下载链接,进行数据下载,也可以将链接复制到IDM或者迅雷进行批量下载。