第一步:需求分析
快3岁的女儿最近开始喜欢画画,就是给图片填充彩色。但我又觉得没必要买本书,所以就准备去晚上找一些图片,自己打印。好处是用起来方便,喜欢的图片,可以多打印一些,随便玩。然后google一下,找到了一些合适的资源,主要是准备用这个网址:http://nurienomori.com/nurie.html 感觉还可以,所以就是它了。
第二步:分析网页源码
这一步可简单了,如图:
稍微分析一下,就是取出网页中的 a 标签,然后拿到里边的链接。这个链接的规则是以 'images/nurie/' 开始,然后接一个字母和数组组合的名字,资源后缀是.pdf。 所以我们可以用正则表达式 "images/nurie/[a-z]+[0-9]+.pdf" 来匹配。
第三步:写代码
当然是用Python了。BeautifulSoup 、requests 走起来。贴个代码吧,比较简单,也是现学现用,别喷我。
# -*- coding:UTF-8 -*-
from urllib import request
import requests
from bs4 import BeautifulSoup
import re
if __name__ == "__main__":
download_url = "http://nurienomori.com/nurie.html"
head = {}
head['User-Agent'] = 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19'
download_req = request.Request(url = download_url, headers = head)
download_response = request.urlopen(download_req)
download_html = download_response
print(download_html)
soup_texts = BeautifulSoup(download_html, 'lxml')
print(type(soup_texts))
for tag in soup_texts.find_all(href=re.compile("images/nurie/[a-z]+[0-9]+.pdf")):
res = "http://nurienomori.com/" + tag["href"]
name = re.search("[a-z]+[0-9]+.pdf", res, flags=0)
path = './other/' + str(name.group())
print(path)
r = requests.get(res, stream=True)
if r.status_code == 200:
with open(path,'wb') as f:
for chunk in r.iter_content(chunk_size=1024):
f.write(chunk)
第四步:结果
大概接近293 张图片,因为文件夹下有个txt文件保存了所有文件下载地址。😶