脚本在最后,可以直接试用,相关的库可能需要自己安装
第一步,你需要获得网页上下载文件地址的列表
用浏览器查看页面源文件得到 />
可以看到,这个格式是很清晰的,用xpath获得列表即可,
这部分你可以去网上找相关教程,这部分的代码如下:
Host = 'http://cnn.csail.mit.edu/motif_occupancy/'
response = requests.get(Host).content
selector = html.fromstring(response)
book_list = selector.xpath('//table//a//@href')
# 去除部分表头元素
book_list = filter(lambda x: x.startswith('wg'), book_list)
第二步,进入其中一个下载列表
查看页面源文件得到 />
我只看了若干的几个,假设任意一个都是这种格式,那么相关的连接无需搜索即可手动确定
第三步,在本地创建文件夹,并保存文件
# 在需要的地方建立文件夹
os.system('mkdir -p %s' % book)
for category in ['train.data', 'test.data']:
url = Host + book + category
headers["Referer"] = Host + book
a = requests.get(url, headers = headers)
xxx
with open(os.path.join(book, category), 'wb') as f:
f.write(requests.get(url).content)
现在的问题是,不知道什么原因,我这边的网络下载文件速率巨慢,大概1分钟3M的样子,可能是网络的原因吧,如果题主下载速率还可以,那就没问题,如果也不行,你只能自己找找原因了。我这边浏览器下载文件也很慢,看来网站并没有抑制爬虫的措施。
整体代码为
#!/usr/local/bin/python3
#-*-coding:utf-8-*-
import requests
from lxml import html
import os
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.1 Safari/605.1.15",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Referer": "",
"DNT": "1",
}
Host = 'http://cnn.csail.mit.edu/motif_occupancy/'
response = requests.get(Host).content
selector = html.fromstring(response)
book_list = selector.xpath('//table//a//@href')
# 去除部分表头元素
book_list = filter(lambda x: x.startswith('wg'), book_list)
for book in book_list:
# 在需要的地方建立文件夹
os.system('mkdir -p %s' % book)
for category in ['train.data', 'test.data']:
url = Host + book + category
headers["Referer"] = Host + book
with open(os.path.join(book, category), 'wb') as f:
f.write(requests.get(url, headers = headers).content)