【发布时间】:2020-08-14 12:05:40
【问题描述】:
我正在创建一个下载文件,以便从与我雇主公司相关的网站自动下载 PDF。
看起来 PDF 包含在 JQueryFileTree 中。有没有办法可以下载以下文件夹之一并将其与内容 PDF 一起保存到磁盘?
到目前为止,我正在使用 Python 和 selenium 来自动登录等。
谢谢
到目前为止我的代码:
from selenium import webdriver
from time import sleep
import requests
from bs4 import BeautifulSoup as bs
import secrets
class manual_grabber():
""" A class creating a manual downloader for the Roger Technology website """
def __init__(self):
""" Initialize attributes of manual grabber """
self.driver = webdriver.Chrome('\\Users\\Joel\\Desktop\\Python\\manual_grabber\\chromedriver.exe')
def login(self):
""" Function controlling the login logic """
self.driver.get('urltosite')
sleep(1)
# Locate elements and enter login details
user_in = self.driver.find_element_by_xpath('/html/body/div[2]/form/input[6]')
user_in.send_keys(secrets.username)
pass_in = self.driver.find_element_by_xpath('/html/body/div[2]/form/input[7]')
pass_in.send_keys(secrets.password)
enter_button = self.driver.find_element_by_xpath('/html/body/div[2]/form/div/input')
enter_button.click()
# Click Self Service Area button
self_service_button = self.driver.find_element_by_xpath('//*[@id="bs-example-navbar-collapse-1"]/ul/li[1]/a')
self_service_button.click()
grab = manual_grabber()
grab.login()
单击其中一个文件夹时,会在树右侧的窗口中打开内容 PDF。
【问题讨论】:
-
嗨,您能分享一下您目前的代码、DOM 结构以及如何从这样的显示器手动下载文件夹吗?
-
@RichEdwards 您好,我已经编辑了显示文件结构等的问题。您无法直接手动下载文件夹。您可以通过单击右侧的下载按钮下载每个单独的文件。希望这会有所帮助。
-
Selenium 会做你能做的——你将如何下载文件? - 我假设单击左侧的树然后单击右侧的下载按钮? - ... 对于 selenium,识别树项目(如果可能,通过文本),对所有符合您的条件的
a使用 find_elements (复数)并循环下载所有 - 或使用 libcurl 之类的库来控制从从 sleneium 下载的 href 是“不受控制的”(即没有进度的 ida) - 如果您可以从 devtools 共享每个阶段的 DOM,我可以帮助您使用标识符,否则伪是我可以去的地方 -
@RichEdwards 谢谢。感谢您的帮助!
-
@RichEdwards 在尝试使用左侧树上的 .click() 函数后,它告诉我找不到元素。这是因为它包含在 JQueryFileTree 中还是无关紧要?
标签: python jquery selenium web-scraping download