gpt4 book ai didi

python-3.x - 如何使用 python 和 selenium 从检查 session 和 cookie 的 URL 下载 PDF?

转载 作者:行者123 更新时间:2023-12-02 04:32:04 25 4
gpt4 key购买 nike

我正在尝试做什么-

我正在尝试自动化-

  1. 登录员工自助服务门户
  2. 单击几个链接以转到以嵌入式 PDF 格式显示工资单的页面
  3. 下载PDF

我已经能够使用下面的代码完成第 1 步和第 2 步:

from selenium import webdriver
browser = webdriver.Chrome()

#open the site and enter userid and password
browser.get('http://eportal.erp.bsnl.co.in/irj/portal')
userName = browser.find_element_by_css_selector ('#logonuidfield')
userName.send_keys('12345678')
password = browser.find_element_by_css_selector ('#logonpassfield')
password.send_keys('12345678')
password.submit()

#clicking on couple of links to get to the salary statement page
employeess = browser.find_element_by_css_selector ('#navNodeAnchor_1_1')
employeess.click()
browser.switch_to.frame('pb_100693274')
browser.switch_to.frame('isolatedWorkArea')
payslip = browser.find_element_by_xpath ('//*[@id="aaabGFON.AreaGroupViewStatic.QuickLink12"]/span')
payslip.click()

#get the url for embedded PDF
browser.switch_to.frame('pb_100693274')
browser.switch_to.frame('isolatedWorkArea')
browser.switch_to.frame('aaabLDOL.VcRfwIFrameView.RfwIframe')
url = browser.find_element_by_xpath('//*[@id="plugin"]').get_attribute('src')

当我打印“url”时,我得到的 url 为 -( http://eportal.erp.bsnl.co.in/webdynpro/dispatcher/sap.com/ess~rem/PaySlip2/~wd_key181_1513145812322/unknown.pdf?sap-wd-download=1&sap-wd-cltwndid=WID1513145774222&sap-wd-secure-id=32c76516dfcd11e794e8001a4b09cbd80843296581&sap-ext-sid=yUx3bKEyzSr2CqpOKogWEQ--3Kt0yPvk8X20QivyLzFWEw--%2Fpcd%3Aportal_content%2Fcom.hclt.f_bsnl_content%2Fcom.hclt.f_bp%2Fcom.hclt.f_hcm%2Fcom.hclt.f_ess%2Fcom.hclt.f_copied%2Fcom.hclt.f_roles%2Fcom.sap.pct.erp.ess.employee_self_service%2Fcom.sap.pct.erp.ess.employee_self_service%2Fcom.sap.pct.erp.ess.area_benefits_payment%2Fcom.sap.pct.erp.ess.paycheck%2Fsap.com%2Fess%7Erem%2FPaySlip2%2Fbase&sap-wd-norefresh=X&sap-ep-version=7.0106.20091228220110.0000 )

它是动态生成的,所以我尝试使用 wget 下载 PDF

import wget
wget.download(url)

结果是——'未知.pdf'

但是当我检查这个文件时,它只有 1Kb,打开它时会出现“文件可能已损坏的消息”。该文件的大小应约为 80Kb。

我尝试过的-我试图在 新标签 中打开上面的长 url,它显示了 PDF。但是,当我尝试在新窗口中打开相同的 url 时,出现“ session 已过期”错误,我认为这是我无法下载完整文件的原因。

我怀疑这意味着服务器在发送文件之前会检查 session /cookie。

有没有办法从上面给定的 url 下载 PDF 文件,从 Chromedriver 启动的同一个浏览器窗口登录或传递 session /cookie 以及下载文件的 url?

最佳答案

您必须使用正确的选项打开 chrome。然后,您应该能够通过调用 browser.get(url) 通过 chrome 下载该文件。

from selenium import webdriver

# define chrome options and open chrome
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option('prefs', {
"download.default_directory": '/path/to/download-directory', # <-- enter your download dir here
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"plugins.always_open_pdf_externally": True
}
)
browser = webdriver.Chrome(options=chrome_options)

# download pdf
browser.get(url-to-pdf)

关于python-3.x - 如何使用 python 和 selenium 从检查 session 和 cookie 的 URL 下载 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47794093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com