遇到下载美国冰雪数据中心的数据过程中出现的问题。https://n5eil01u.ecs.nsidc.org/MOST/MOD10A2.006/,如图这个地址。
地址下有这样接近6000个文件夹,需要每个文件夹有100多个数据,需要提取每一天中的4个数据。
于是想用爬虫来解决
找到了这两篇入门教学【爬虫其实很简单】requests 与 beautiful soup基础入门和【爬虫其实很简单】模拟登陆与文件下载,理论上是能解决我的问题。但实际操作还是遇到了各种各样的问题。
目前的代码是这样的
import requests
from bs4 import BeautifulSoup
data = {
'username': 'qiuyang1001',
'password': 'ZHAOqiuyang1001',
'authenticity_token': 'sY2F0quYmynvGEdI0G2sWdZkQPeBacnmW/7HzOy653envjX/Y88ZPYxb8JIW2FXkLmPOQvjPelk1jIVNGaok0Q==',
}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36'}
s = requests.Session()
r = s.post('https://urs.earthdata.nasa.gov/login', data)
print(r.url)
d = s.get('https://n5eil01u.ecs.nsidc.org/MOST/MOD10A2.006/')
soup = BeautifulSoup(d.text, 'lxml')
print(d.text)
tds = soup.find_all("td", class_='indexcolname')
for td in tds:
url = div.a.get('href')
print(url)
后来发现在https://urs.earthdata.nasa.gov/login里post请求时要求发送的不止用户名和密码,是一串如下
d = s.get('https://n5eil01u.ecs.nsidc.org/MOST/MOD10A2.006/')
。接下去是读
td class=indexcolname
下面 <a href>
的url ,然后进去循环读出每个文件的url。再用筛选工具筛选出自己需要的url,然后下载。后来发现在NASA 登陆后可以直接用工具选取你需要的区域的数据和各类数据。然后导出url表,进行下载。
于是就没有继续爬虫的研究。