簡體   English   中英

如何從將PDF嵌入HTML的URL下載PDF文件?

[英]How can I download a PDF file from an URL where the PDF is embedded into the HTML?

我正在嘗試做的事情:我想抓取網頁以從網站上加載了javascript的PDF文件中獲取財務交易額。 示例網站: http : //www.nebraskadeedsonline.us/document.aspx?g5savSPtTDnumMn1bRBWoKqN6Gu65tBhDE9%2fVs5YdPg=

當我單擊“查看文檔”按鈕時,PDF文件會加載到瀏覽器的窗口中(我使用的是Google Chrome)。 我可以右鍵單擊PDF並將其保存到計算機中,但是我想通過讓Selenium(或類似軟件包)下載該文件然后對其進行OCR處理來自動化該過程。

如果可以保存它,則可以執行OCR部分(我希望如此)。 我只是無法保存文件。

這里 ,我找到並修改了以下代碼:

def download_pdf(lnk):

    from selenium import webdriver
    from time import sleep

    options = webdriver.ChromeOptions()

    download_folder = "C:\\Users\\rickc\\Documents\\Scraper2\\screenshots\\"

    profile = {"plugins.plugins_list": [{"enabled": False,
                                         "name": "Chrome PDF Viewer"}],
               "download.default_directory": download_folder,
               "download.extensions_to_open": ""}

    options.add_experimental_option("prefs", profile)

    print("Downloading file from link: {}".format(lnk))

    driver = webdriver.Chrome(chrome_options = options)
    driver.get(lnk)

    filename = lnk.split("/")[3].split(".aspx")[0]+".pdf"
    print("File: {}".format(filename))

    print("Status: Download Complete.")
    print("Folder: {}".format(download_folder))

    driver.close()

download_pdf('http://www.nebraskadeedsonline.us/document.aspx?g5savSPtTDnumMn1bRBWoKqN6Gu65tBhDE9fVs5YdPg=')

但這不起作用。 我的大學教授曾經說過:“如果您在這個問題上花了兩個多小時而又沒有取得進展,那么該是時候在其他地方尋求幫助了。” 因此,我正在尋求幫助。

其他信息:上面的鏈接將帶您進入網頁,但只有在單擊“查看文檔”按鈕后才能訪問PDF文檔。 我已經嘗試過使用Selenium的webdriver.find_element_by_ID('btnDocument').click()來使事情發生,它只是加載頁面,但對此不做任何事情。

您可以使用requestsBeautifulSoup庫下載pdf。 在下面的代碼中,將/Users/../aaa.pdf替換為下載文檔的完整路徑:

import requests
from bs4 import BeautifulSoup

url = 'http://www.nebraskadeedsonline.us/document.aspx?g5savSPtTDnumMn1bRBWoKqN6Gu65tBhDE9%2fVs5YdPg='

response = requests.post(url)
page = BeautifulSoup(response.text, "html.parser")

VIEWSTATE = page.select_one("#__VIEWSTATE").attrs["value"]
VIEWSTATEGENERATOR = page.select_one("#__VIEWSTATEGENERATOR").attrs["value"]
EVENTVALIDATION = page.select_one("#__EVENTVALIDATION").attrs["value"]
btnDocument = page.select_one("[name=btnDocument]").attrs["value"]

data = {
  '__VIEWSTATE': VIEWSTATE,
  '__VIEWSTATEGENERATOR': VIEWSTATEGENERATOR,
  '__EVENTVALIDATION': EVENTVALIDATION,
  'btnDocument': btnDocument
}
response = requests.post(url, data=data)
with open('/Users/../aaa.pdf', 'wb') as f:
    f.write(response.content)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM