python爬虫实战 | 批量爬取开放服务器的文件

今天在查有关spss modeler的参考资料时,发现了这个网站:
ftp://public.dhe.ibm.com/software/analytics/spss/documentation/modeler/14.2/zh_CN/

里面包含了许多有关spss modeler的文件,于是想用爬虫把它们都爬取下来。
python爬虫实战 | 批量爬取开放服务器的文件_第1张图片

文件不多,但是想到以后可能会遇到文件比较多的情况,到时候再根据这个程序拓展一下便可以了(虽然又要分析一次源代码~囧)。

废话少说,干活~

首先,观察文件的链接,对于第一个文件,它的url为:
这里写图片描述

对于第二个文件,它的url为:
这里写图片描述

很明显,文件的url就是当前目录链接加上文件名。那么下一步,我们去找到这些文件名。

右键查看源代码,搜索.pdf,可以看到:
python爬虫实战 | 批量爬取开放服务器的文件_第2张图片

接下来就是用正则表达式找到这些文件名,然后根据当前目录的url,得到文件的url.

代码如下:

#-*- coding:utf-8 -*-
import requests
import re
import os
basicUrl='http://public.dhe.ibm.com/software/analytics/spss/documentation/modeler/14.2/zh_CN/'#注意这里不能用ftp://开头,要改成http://,不然会报错

def getHTMLText(url, code="utf-8"):
    try:
        r = requests.get(url)
        r.raise_for_status()
        r.encoding = code
        return r.text
    except:
        return ""

html = getHTMLText(basicUrl)
r= re.compile(r'\w*.pdf')
for filename in r.findall(html):#找到网页上的pdf文件
    if not os.path.exists(filename):#若该文件之前没有保存过,则保存下来
        with open(filename, 'wb') as f:
            file=requests.get(basicUrl+filename)
            f.write(file.content)#保存文件用二进制形式

爬取后资料如下:
python爬虫实战 | 批量爬取开放服务器的文件_第3张图片

你可能感兴趣的:(python)