摘要:任務批量抓取網頁文件有一個,里面有數千條指向下載鏈接的網頁地址,現在,需要批量抓取這些網頁地址中的文件。利用,具體邏輯是正常情況下,按次序下載文件,如果同一文件,下載失敗次數超過,則跳過,下載下一個文件,并記錄錯誤信息。
任務:批量抓取網頁pdf文件
有一個excel,里面有數千條指向pdf下載鏈接的網頁地址,現在,需要批量抓取這些網頁地址中的pdf文件。
python環境:
anaconda3讀取excel,獲取網頁地址
openpyxl
beautifulsoup4
使用openpyxl庫,讀取.xslx文件;
(曾嘗試使用xlrd庫讀取.xsl文件,但無法獲取超鏈接)
安裝openpyxl
pip install openpyxl
提取xslx文件中的超鏈接
示例文件構造
公告日期 | 證券代碼 | 公告標題 |
---|---|---|
2018-04-20 | 603999.SH | 讀者傳媒:2017年年度報告 |
2018-04-28 | 603998.SH | 方盛制藥:2017年年度報告 |
def readxlsx(path): workbook = openpyxl.load_workbook(path) Data_sheet = workbook.get_sheet_by_name("sheet1") rowNum = Data_sheet.max_row #讀取最大行數 c = 3 # 第三列是所需要提取的數據 server = "http://news.windin.com/ns/" for row in range(1, rowNum + 1): link = Data_sheet.cell(row=row, column=c).value url = re.split(r""", link)[1] print(url) downEachPdf(url, server)獲取網頁pdf下載地址
進入讀者傳媒:2017年年度報告,在chrome瀏覽器中可以按F12查看網頁源碼,以下截取部分源碼:
附件:603999讀者傳媒2017年年度報告.pdf (2.00M)  
可見,herf下載鏈接在a標簽中,可以通過解析html源碼獲取下載鏈接。
這里使用BeautifulSoup解析html。
Beautiful Soup 是用Python寫的一個HTML/XML的解析器,它可以很好的處理不規范標記并生成剖析樹(parse tree)。 它提供簡單又常用的導航(navigating),搜索以及修改剖析樹的操作。它可以大大節省你的編程時間。
安裝BeautifulSoup4
pip install beautifulsoup4
獲取pdf下載鏈接并下載
def downEachPdf(target, server): req = requests.get(url=target) html = req.text bf = BeautifulSoup(html, features="lxml") a = bf.find_all("a") for each in a: url = server + each.get("href") print("downloading:", each.string, url) urllib.request.urlretrieve(url, "./report/" + each.string)同一ip重復訪問同一服務器被拒絕
利用以上方法已經能夠實現批量網頁pdf的下載了,但是,在實際操作過程中,會發現如果同一ip頻繁地訪問某一服務器,訪問會被拒絕(可能被誤判為DOS攻擊,通常做了Rate-limit的網站都會停止響應一段時間,你可以Catch這個Exception,sleep一段時間,參考)。因此,對下載邏輯進行了調整。
利用try-catch,具體邏輯是:正常情況下,按次序下載文件,如果同一文件,下載失敗次數超過10,則跳過,下載下一個文件,并記錄錯誤信息。
import os import time def downloadXml(flag_exists, file_dir, file_name, xml_url): if not flag_exists: os.makedirs(file_dir) local = os.path.join(file_dir, file_name) try: urllib.request.urlretrieve(xml_url, local) except Exception as e: print("the first error: ", e) cur_try = 0 total_try = 10 if cur_try < total_try: cur_try += 1 time.sleep(15) return downloadXml(flag_exists, file_dir, file_name, xml_url) else: print("the last error: ") with open(test_dir + "error_url.txt", "a") as f: f.write(xml_url) raise Exception(e)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/53683.html
摘要:任務批量抓取網頁文件有一個,里面有數千條指向下載鏈接的網頁地址,現在,需要批量抓取這些網頁地址中的文件。利用,具體邏輯是正常情況下,按次序下載文件,如果同一文件,下載失敗次數超過,則跳過,下載下一個文件,并記錄錯誤信息。 任務:批量抓取網頁pdf文件 有一個excel,里面有數千條指向pdf下載鏈接的網頁地址,現在,需要批量抓取這些網頁地址中的pdf文件。python環境: anaco...
摘要:獲取獲取上下文句柄執行計算銷毀句柄除此之外,還可以使用意為在瀏覽器環境執行腳本,可傳入第二個參數作為句柄,而則針對選中的一個元素執行操作。 我們日常使用瀏覽器或者說是有頭瀏覽器時的步驟為:啟動瀏覽器、打開一個網頁、進行交互。 無頭瀏覽器指的是我們使用腳本來執行以上過程的瀏覽器,能模擬真實的瀏覽器使用場景。 有了無頭瀏覽器,我們就能做包括但不限于以下事情: 對網頁進行截圖保存為圖片或 ...
摘要:在這之前,還是有必要對一些概念超輕量級反爬蟲方案后端掘金前言爬蟲和反爬蟲日益成為每家公司的標配系統。 爬蟲修煉之道——從網頁中提取結構化數據并保存(以爬取糗百文本板塊所有糗事為例) - 后端 - 掘金歡迎大家關注我的專題:爬蟲修煉之道 上篇 爬蟲修煉之道——編寫一個爬取多頁面的網絡爬蟲主要講解了如何使用python編寫一個可以下載多頁面的爬蟲,如何將相對URL轉為絕對URL,如何限速,...
摘要:,引言晚上翻看網絡數據采集這本書,看到讀取內容的代碼,想起來前幾天集搜客剛剛發布了一個抓取網頁內容的抓取規則,這個規則能夠把內容當成來做網頁抓取。,把轉換成文本的源代碼下面的源代碼,讀取文件內容互聯網上的或是本地的,轉換成文本,打印出來。 showImg(https://segmentfault.com/img/bVwER8); 1,引言 晚上翻看《Python網絡數據采集》這本書,看...
摘要:目標網站西瓜視頻項目功能下載頭條號維辰財經下的最新個視頻項目地址地址姊妹項目批量下載美女圖集簡介一般批量爬取視頻或者圖片的套路是,使用爬蟲獲得文件鏈接集合,然后通過等方法逐個保存文件。然而在批量下載時,逐個手動的獲取視頻鏈接顯然不可取。 目標網站:西瓜視頻 項目功能:下載頭條號【維辰財經】下的最新20個視頻 項目地址:Github 地址 姊妹項目:批量下載美女圖集 簡介 一般批量...
閱讀 1671·2021-09-26 10:00
閱讀 2935·2021-09-06 15:00
閱讀 3538·2021-09-04 16:40
閱讀 2298·2019-08-30 15:44
閱讀 715·2019-08-30 10:59
閱讀 1883·2019-08-29 18:34
閱讀 3616·2019-08-29 15:42
閱讀 2292·2019-08-29 15:36