簡體   English   中英

保存需要登錄的網頁的 PDF

[英]Save a PDF of a webpage that requires login

import requests
import pdfkit

# start a session
s = requests.Session()
data = {'username': 'name', 'password': 'pass'}

# POST request with cookies
s.post('https://www.facebook.com/login.php', data= data)
url = 'https://www.facebook.com'

# navigate to page with cookies set
options = {'cookie': s.cookies.items(), 'javascript-delay': 1000}
pdfkit.from_url(url, 'file.pdf', options= options)

我正在嘗試通過設置 cookie 並使用請求導航到頁面來自動化將受登錄保護的網頁保存為 PDF 的過程。 有沒有更好的方法來解決這個/我做錯的事情?

Portal 發送具有不同名稱的登錄名和密碼,還發送可以在每個請求中更改的隱藏值。 它發送到與login.php不同的 url,它可以檢查標題以阻止機器人/腳本。

使用Selenium可以更輕松地控制瀏覽器,您可以拍照或獲取 HTML 以生成 PDF。

import selenium.webdriver
import pdfkit
#import time

driver = selenium.webdriver.Chrome()
#driver = selenium.webdriver.Firefox()

driver.get('https://www.facebook.com/login.php')
#time.sleep(1)

driver.find_element_by_id('email').send_keys('your_login')
driver.find_element_by_id('pass').send_keys('your_password')
driver.find_element_by_id('loginbutton').click()
#time.sleep(2)

driver.save_screenshot('output.png') # only visible part

#print(driver.page_source)

pdfkit.from_string(driver.page_source, 'file.pdf')

也許使用驅動程序“PhantomJS”或模塊PIL/pillow您可以獲得完整頁面作為屏幕截圖。
請參閱chrome 中的 generate-full-page-screenshot-in-chrome

使用 wkhtmltopdf,您可以從命令行執行以下操作:

wkhtmltopdf --cookie-jar cookies.txt  https://example.com/loginform.html --post 'user_id' 'my_id' --post 'user_pass' 'my_pass --post 'submit_btn' 'submit' throw_away.pdf 
wkhtmltopdf --cookie-jar cookies.txt  https://example.com/securepage.html keep_this_one.pdf

暫無
暫無

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

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