Playwright Python: PDF рендерирует на новой вкладке (200 приложение/PDF), но я не могу его сохранить - как захватить встPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Playwright Python: PDF рендерирует на новой вкладке (200 приложение/PDF), но я не могу его сохранить - как захватить вст

Сообщение Anonymous »

Я автомагирую сайт инспекций округа Пима с драматургом (Python). Поток:

[*] открытые списки: https://publicworks.pima.gov/inspections

Нажмите на ссылку на запись, которая идет на страницу Accela, как:
/>https://aca-prod.accela.com/pima/cap/ca ... ..образной Это открывает новую вкладку на страницу параметров отчета Accela:
https://aca-prod.accela.com/pima/report ... ycode=pima> < /ul>
эта страница затем загружает фактический PDF с: < /strong>

https://aca-prod.accela.com/pima/report ... ycode=pima> в Browser Is Is Is Wise Pdf Render Prender Prender. Мой сетевой журнал также показывает ответ PDF: < /p>

Код: Выделить всё

RESP 200 https://aca-prod.accela.com/PIMA/Report/ShowReport.aspx?Module=Building&reportType=PRINT_PERMIT_SUMMARY_REPORT&reportID=762&agencyCode=PIMA | ct=application/pdf cl=160319
< /code>
… Но мой код никогда не сохраняет байты, это очень расстраивает. CackDownloads = true 
не помогает (сервер-это тип контента: приложение/pdf inline, а не вложение). Я попробовал несколько подходов. Тот же результат. < /Li>
< /ul>
Минимальный код, который воспроизводит < /p>

Код: Выделить всё

from pathlib import Path
from playwright.sync_api import sync_playwright

BASE = "https://publicworks.pima.gov/inspections"
DOWNLOADS = Path("downloads"); DOWNLOADS.mkdir(exist_ok=True)

def is_pdf_response(resp):
return ("Report/ShowReport.aspx" in resp.url
and "application/pdf" in (resp.headers.get("content-type","").lower()))

with sync_playwright() as p:
browser = p.chromium.launch(channel="chrome", headless=False)
ctx = browser.new_context(accept_downloads=True)  # inline PDF, so this never fires
page = ctx.new_page()

# (1) Go to listings and click Prev until rows exist (omitted for brevity)
page.goto(BASE)

# (2) Click a record link -> record details page (omitted: selector resolution)
# page.click("a[href*='CapDetail.aspx']")

# (3) Click "View inspection summary" which opens a new tab
with ctx.expect_page() as new_page_info:
page.click("a#ctl00_PlaceHolderMain_lnkPrintSummary")  # link text/ID varies, but this opens the tab
pdf_tab = new_page_info.value

# (4) The parameter page loads, then the PDF URL is fetched by the site.
# Try to catch the actual PDF response:
caught = {"saved": False}

def on_response(resp):
if is_pdf_response(resp):
# Attempt 1: save body() from the response we just saw
content = resp.body()  # 

Подробнее здесь: [url]https://stackoverflow.com/questions/79752888/playwright-python-pdf-renders-in-new-tab-200-application-pdf-but-i-can-t-save[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»