亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

批量抓取網(wǎng)頁pdf文件

icyfire / 4303人閱讀

摘要:任務(wù)批量抓取網(wǎng)頁文件有一個,里面有數(shù)千條指向下載鏈接的網(wǎng)頁地址,現(xiàn)在,需要批量抓取這些網(wǎng)頁地址中的文件。利用,具體邏輯是正常情況下,按次序下載文件,如果同一文件,下載失敗次數(shù)超過,則跳過,下載下一個文件,并記錄錯誤信息。

任務(wù):批量抓取網(wǎng)頁pdf文件

有一個excel,里面有數(shù)千條指向pdf下載鏈接的網(wǎng)頁地址,現(xiàn)在,需要批量抓取這些網(wǎng)頁地址中的pdf文件。
python環(huán)境:

anaconda3
openpyxl
beautifulsoup4
讀取excel,獲取網(wǎng)頁地址

使用openpyxl庫,讀取.xslx文件;
(曾嘗試使用xlrd庫讀取.xsl文件,但無法獲取超鏈接)

安裝openpyxl

pip install openpyxl

提取xslx文件中的超鏈接

示例文件構(gòu)造

公告日期 證券代碼 公告標(biāo)題
2018-04-20 603999.SH 讀者傳媒:2017年年度報(bào)告
2018-04-28 603998.SH 方盛制藥:2017年年度報(bào)告
def  readxlsx(path):
    workbook = openpyxl.load_workbook(path)
    Data_sheet = workbook.get_sheet_by_name("sheet1")
    rowNum = Data_sheet.max_row #讀取最大行數(shù)
    c =  3  # 第三列是所需要提取的數(shù)據(jù)
    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)
獲取網(wǎng)頁pdf下載地址

進(jìn)入讀者傳媒:2017年年度報(bào)告,在chrome瀏覽器中可以按F12查看網(wǎng)頁源碼,以下截取部分源碼:

可見,herf下載鏈接在a標(biāo)簽中,可以通過解析html源碼獲取下載鏈接。
這里使用BeautifulSoup解析html。

Beautiful Soup 是用Python寫的一個HTML/XML的解析器,它可以很好的處理不規(guī)范標(biāo)記并生成剖析樹(parse tree)。 它提供簡單又常用的導(dǎo)航(navigating),搜索以及修改剖析樹的操作。它可以大大節(jié)省你的編程時(shí)間。

安裝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重復(fù)訪問同一服務(wù)器被拒絕

利用以上方法已經(jīng)能夠?qū)崿F(xiàn)批量網(wǎng)頁pdf的下載了,但是,在實(shí)際操作過程中,會發(fā)現(xiàn)如果同一ip頻繁地訪問某一服務(wù)器,訪問會被拒絕(可能被誤判為DOS攻擊,通常做了Rate-limit的網(wǎng)站都會停止響應(yīng)一段時(shí)間,你可以Catch這個Exception,sleep一段時(shí)間,參考)。因此,對下載邏輯進(jìn)行了調(diào)整。
利用try-catch,具體邏輯是:正常情況下,按次序下載文件,如果同一文件,下載失敗次數(shù)超過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)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/43180.html

相關(guān)文章

  • 批量抓取網(wǎng)頁pdf文件

    摘要:任務(wù)批量抓取網(wǎng)頁文件有一個,里面有數(shù)千條指向下載鏈接的網(wǎng)頁地址,現(xiàn)在,需要批量抓取這些網(wǎng)頁地址中的文件。利用,具體邏輯是正常情況下,按次序下載文件,如果同一文件,下載失敗次數(shù)超過,則跳過,下載下一個文件,并記錄錯誤信息。 任務(wù):批量抓取網(wǎng)頁pdf文件 有一個excel,里面有數(shù)千條指向pdf下載鏈接的網(wǎng)頁地址,現(xiàn)在,需要批量抓取這些網(wǎng)頁地址中的pdf文件。python環(huán)境: anaco...

    pubdreamcc 評論0 收藏0
  • Puppeteer 初探

    摘要:獲取獲取上下文句柄執(zhí)行計(jì)算銷毀句柄除此之外,還可以使用意為在瀏覽器環(huán)境執(zhí)行腳本,可傳入第二個參數(shù)作為句柄,而則針對選中的一個元素執(zhí)行操作。 我們?nèi)粘J褂脼g覽器或者說是有頭瀏覽器時(shí)的步驟為:啟動瀏覽器、打開一個網(wǎng)頁、進(jìn)行交互。 無頭瀏覽器指的是我們使用腳本來執(zhí)行以上過程的瀏覽器,能模擬真實(shí)的瀏覽器使用場景。 有了無頭瀏覽器,我們就能做包括但不限于以下事情: 對網(wǎng)頁進(jìn)行截圖保存為圖片或 ...

    appetizerio 評論0 收藏0
  • 爬蟲 - 收藏集 - 掘金

    摘要:在這之前,還是有必要對一些概念超輕量級反爬蟲方案后端掘金前言爬蟲和反爬蟲日益成為每家公司的標(biāo)配系統(tǒng)。 爬蟲修煉之道——從網(wǎng)頁中提取結(jié)構(gòu)化數(shù)據(jù)并保存(以爬取糗百文本板塊所有糗事為例) - 后端 - 掘金歡迎大家關(guān)注我的專題:爬蟲修煉之道 上篇 爬蟲修煉之道——編寫一個爬取多頁面的網(wǎng)絡(luò)爬蟲主要講解了如何使用python編寫一個可以下載多頁面的爬蟲,如何將相對URL轉(zhuǎn)為絕對URL,如何限速,...

    1fe1se 評論0 收藏0
  • Python讀取PDF內(nèi)容

    摘要:,引言晚上翻看網(wǎng)絡(luò)數(shù)據(jù)采集這本書,看到讀取內(nèi)容的代碼,想起來前幾天集搜客剛剛發(fā)布了一個抓取網(wǎng)頁內(nèi)容的抓取規(guī)則,這個規(guī)則能夠把內(nèi)容當(dāng)成來做網(wǎng)頁抓取。,把轉(zhuǎn)換成文本的源代碼下面的源代碼,讀取文件內(nèi)容互聯(lián)網(wǎng)上的或是本地的,轉(zhuǎn)換成文本,打印出來。 showImg(https://segmentfault.com/img/bVwER8); 1,引言 晚上翻看《Python網(wǎng)絡(luò)數(shù)據(jù)采集》這本書,看...

    callmewhy 評論0 收藏0
  • Node 批量爬取頭條視頻并保存

    摘要:目標(biāo)網(wǎng)站西瓜視頻項(xiàng)目功能下載頭條號維辰財(cái)經(jīng)下的最新個視頻項(xiàng)目地址地址姊妹項(xiàng)目批量下載美女圖集簡介一般批量爬取視頻或者圖片的套路是,使用爬蟲獲得文件鏈接集合,然后通過等方法逐個保存文件。然而在批量下載時(shí),逐個手動的獲取視頻鏈接顯然不可取。 目標(biāo)網(wǎng)站:西瓜視頻 項(xiàng)目功能:下載頭條號【維辰財(cái)經(jīng)】下的最新20個視頻 項(xiàng)目地址:Github 地址 姊妹項(xiàng)目:批量下載美女圖集 簡介 一般批量...

    Jioby 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<