朋友想下载这62个网页中的字帖图片:http://www.yac8.com/news/11003.html
1. Chrome 「审查元素」中看到的源代码与真实的源码不同。
2. 图片网址附近源码:
获取源码的正则表达式:
]*?src="(.+?\.jpg)"[^>]*?>
建议使用Expresso,带有语义分析功能
3. 网页编码是GB2312:
注意这里用的是Python 3
import urllib.request
import re
import time
# 作为保存的图片文件名
index = 1
# 获取网页源码
def getHtml(url):
page = urllib.request.urlopen(url) # 打开一个URL地址
html = page.read().decode('gb2312') # 读取URL上的数据
return html
# 网页中的图片网址:
#
def getImg(html):
re_image_url = r']*?src="(.+?\.jpg)"[^>]*?>'
img_url_list = re_image_url.findall(html)
global index
for img_url in img_url_list:
# 将远程数据下载到本地
urllib.request.urlretrieve(img_url,save_path + r'\%s.jpg' % index)
index += 1
origin_url_head = r'http://www.yac8.com/news/11003'
origin_url_tail = r'.html'
save_path = r'F:\python_results'
time1= time.time()
getImg(getHtml(origin_url_head + origin_url_tail))
for x in range(2,63):
getImg(getHtml(origin_url_head + '_%s' % x + origin_url_tail))
time2= time.time()
print('下载完成!一共下载了 %s 个文件,用时 %s 秒' % (index, time2-time1))
最终结果:
下载完成!一共下载了 186 个文件,用时 98.609375 秒
仍然存在一些问题,比如下载中途出错怎么办?应该添加try except保存错误信息,下载完成后再重试。