成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

pubdreamcc / 2811人閱讀

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

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

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

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

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

安裝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)頁(yè)pdf下載地址

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

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

Beautiful Soup 是用Python寫(xiě)的一個(gè)HTML/XML的解析器,它可以很好的處理不規(guī)范標(biāo)記并生成剖析樹(shù)(parse tree)。 它提供簡(jiǎn)單又常用的導(dǎo)航(navigating),搜索以及修改剖析樹(shù)的操作。它可以大大節(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èn)同一服務(wù)器被拒絕

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

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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/53683.html

相關(guān)文章

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

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

    icyfire 評(píng)論0 收藏0
  • Puppeteer 初探

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

    appetizerio 評(píng)論0 收藏0
  • 爬蟲(chóng) - 收藏集 - 掘金

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

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

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

    callmewhy 評(píng)論0 收藏0
  • Node 批量爬取頭條視頻并保存

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

    Jioby 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<