用python爬蟲批量下載pdf的實(shí)現(xiàn)
今天遇到一個(gè)任務(wù),給一個(gè)excel文件,里面有500多個(gè)pdf文件的下載鏈接,需要把這些文件全部下載下來。我知道用python爬蟲可以批量下載,不過之前沒有接觸過。今天下午找了下資料,終于成功搞定,免去了手動(dòng)下載的煩惱。
由于我搭建的python版本是3.5,我學(xué)習(xí)了上面列舉的參考文獻(xiàn)2中的代碼,這里的版本為2.7,有些語法已經(jīng)不適用了。我修正了部分語法,如下:
# coding = UTF-8
# 爬取李東風(fēng)PDF文檔,網(wǎng)址:http://www.math.pku.edu.cn/teachers/lidf/docs/textrick/index.htm
import urllib.request
import re
import os
# open the url and read
def getHtml(url):
page = urllib.request.urlopen(url)
html = page.read()
page.close()
return html
# compile the regular expressions and find
# all stuff we need
def getUrl(html):
reg = r'(?:href|HREF)="?((?:http://)?.+?\.pdf)'
url_re = re.compile(reg)
url_lst = url_re.findall(html.decode('gb2312'))
return(url_lst)
def getFile(url):
file_name = url.split('/')[-1]
u = urllib.request.urlopen(url)
f = open(file_name, 'wb')
block_sz = 8192
while True:
buffer = u.read(block_sz)
if not buffer:
break
f.write(buffer)
f.close()
print ("Sucessful to download" + " " + file_name)
root_url = 'http://www.math.pku.edu.cn/teachers/lidf/docs/textrick/'
raw_url = 'http://www.math.pku.edu.cn/teachers/lidf/docs/textrick/index.htm'
html = getHtml(raw_url)
url_lst = getUrl(html)
os.mkdir('ldf_download')
os.chdir(os.path.join(os.getcwd(), 'ldf_download'))
for url in url_lst[:]:
url = root_url + url
getFile(url)
上面這個(gè)例子是個(gè)很好的模板。當(dāng)然,上面的還不適用于我的情況,我的做法是:先把地址寫到了html文件中,然后對(duì)正則匹配部分做了些修改,我需要匹配的地址都是這樣的,http://pm.zjsti.gov.cn/tempublicfiles/G176200001/G176200001.pdf。改進(jìn)后的代碼如下:
# coding = UTF-8
# 爬取自己編寫的html鏈接中的PDF文檔,網(wǎng)址:file:///E:/ZjuTH/Documents/pythonCode/pythontest.html
import urllib.request
import re
import os
# open the url and read
def getHtml(url):
page = urllib.request.urlopen(url)
html = page.read()
page.close()
return html
# compile the regular expressions and find
# all stuff we need
def getUrl(html):
reg = r'([A-Z]\d+)' #匹配了G176200001
url_re = re.compile(reg)
url_lst = url_re.findall(html.decode('UTF-8')) #返回匹配的數(shù)組
return(url_lst)
def getFile(url):
file_name = url.split('/')[-1]
u = urllib.request.urlopen(url)
f = open(file_name, 'wb')
block_sz = 8192
while True:
buffer = u.read(block_sz)
if not buffer:
break
f.write(buffer)
f.close()
print ("Sucessful to download" + " " + file_name)
root_url = 'http://pm.zjsti.gov.cn/tempublicfiles/' #下載地址中相同的部分
raw_url = 'file:///E:/ZjuTH/Documents/pythonCode/pythontest.html'
html = getHtml(raw_url)
url_lst = getUrl(html)
os.mkdir('pdf_download')
os.chdir(os.path.join(os.getcwd(), 'pdf_download'))
for url in url_lst[:]:
url = root_url + url+'/'+url+'.pdf' #形成完整的下載地址
getFile(url)
這就輕松搞定啦。
我參考了以下資料,這對(duì)我很有幫助:
1、廖雪峰python教程
2、用Python 爬蟲批量下載PDF文檔
3、用Python 爬蟲爬取貼吧圖片
4、Python爬蟲學(xué)習(xí)系列教程
到此這篇關(guān)于用python爬蟲批量下載pdf的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python爬蟲批量下載pdf內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Django實(shí)現(xiàn)商城驗(yàn)證碼模塊的方法
本文主要涉及圖形驗(yàn)證碼的相關(guān)功能,主要包括,圖形驗(yàn)證碼獲取、驗(yàn)證碼文字存儲(chǔ)、驗(yàn)證碼生成等。需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06
Python Docx庫完美操作word文檔實(shí)例探究
這篇文章主要為大家介紹了Python Docx庫完美操作word文檔,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
python?windows安裝cuda+cudnn+pytorch教程
這篇文章主要介紹了python?windows安裝cuda+cudnn+pytorch教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
Django中使用haystack+whoosh實(shí)現(xiàn)搜索功能
這篇文章主要介紹了Django之使用haystack+whoosh實(shí)現(xiàn)搜索功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
淺談在JupyterNotebook下導(dǎo)入自己的模塊的問題
這篇文章主要介紹了淺談在JupyterNotebook下導(dǎo)入自己的模塊的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Django返回HTML文件的實(shí)現(xiàn)方法
這篇文章主要介紹了Django返回HTML文件的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Windows 8.1 64bit下搭建 Scrapy 0.22 環(huán)境
這篇文章主要介紹了Windows 8.1 64bit下搭建 Scrapy 0.22 環(huán)境,需要的朋友可以參考下2018-11-11

