Как я могу скачать PDF-файл с URL-адреса, где PDF-файл встроен в HTML-файл? - PullRequest
0 голосов
/ 20 февраля 2019

Что я пытаюсь сделать: Я хочу очистить веб-страницу, чтобы получить сумму финансовой транзакции из файла PDF, загруженного с веб-сайта javascript.Пример веб-сайта: 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(), чтобы заставить вещи случиться, и он просто загружает страницу, но ничего с этим не делает.

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете скачать pdf, используя библиотеки requests и BeautifulSoup.В приведенном ниже коде замените /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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...