1. 程式人生 > >通過腳本自動下載Esri會議材料

通過腳本自動下載Esri會議材料

recent Coding ext eve ring tab 包含 search pdf文檔

在Esri的官網上,可以下載到Esri參加或者舉辦的各類會議的材料。官方地址為:http://proceedings.esri.com/library/userconf/index.html。

針對某一會議,該網上往往提供會議材料清單表格,部分材料是提供下載的,例如PPT文檔或者PDF文檔。

以下腳本可用於輔助下載Esri Proceeding網站上的會議PPT,下載好的文檔會自動以文檔的標題重命名,這樣方便檢索使用。

制定下載後存放文檔的本地文件夾,預先把包含會議材料清單表格的頁面使用瀏覽器保存到本地。

# -*- coding:utf-8 -*-
from lxml import etree
from lxml.html import soupparser
import re
from os import path
import shutil
from os import rename
from urllib.request import Request
import urllib.request

try:
    rootpath = ‘D:/EsriPPT/‘
    f = open(‘D:/Recent Proceedings.html‘, ‘r‘, encoding="windows-1252", errors=‘ignore‘)
    t = ‘‘.join(f.readlines())
    parser = etree.XMLParser(encoding=‘gbk‘, dtd_validation=False, recover=True, ns_clean=True)
    tree = soupparser.fromstring(t)
    rows = tree.xpath(‘//table/tbody/tr‘)
    for r in rows:
        cols = r.xpath(‘td‘)
        for links in cols[1].iterchildren(tag=‘a‘):
            result = re.search(r‘dev_int_\d+\.pdf‘, links.get(‘href‘))
            if(result!=None):
                oldpath = rootpath + result.group(0)
                newpath = cols[0].text + ‘.pdf‘
                newpath = rootpath + newpath.replace(‘:‘, ‘_‘).replace(‘/‘, ‘‘).replace(‘?‘, ‘‘)
                # to check whether the original file has downloaded
                if path.exists(oldpath) and not path.exists(newpath):
                    rename(oldpath, newpath)
                else:
                    remote = ‘http://proceedings.esri.com/library/userconf/devsummit17/papers/‘ + result.group(0)
                    urllib.request.urlretrieve(remote, oldpath)
                    rename(oldpath, newpath)

finally:
    f.close()
    del tree

  

通過腳本自動下載Esri會議材料