【发布时间】:2022-01-11 11:01:43
【问题描述】:
同学们,
我正在做一些网页抓取,需要从 www1.hkexnews.hk 网站下载多个 PDF。
但是,我在尝试让我的 Selenium chromedriver 勾选框时遇到了一个问题,每次人们想在上述网站上下载 PDF 时都会出现该框。代码执行,但该框仍然未单击。
请参考下面我的源代码 - 非常感谢任何建议!
driver = webdriver.Chrome('/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/chromedriver',options=chrome_options)
driver.implicitly_wait(10)
driver.maximize_window()
start_address = "https://www1.hkexnews.hk/app/appyearlyindex.html?lang=en&board=mainBoard&year=2021"
driver.get(start_address)
PDF_link = driver.find_element_by_xpath("//a[contains(text(),'Full Version')]")
print("Now clicking...'", PDF_link.text,"'")
PDF_link.click()
checkbox = driver.find_element_by_id('warning-statement-accept')
print("Now clicking...", checkbox.text)
checkbox.click
编辑:谢谢你们!现在下载工作正常,只是一个小的后续问题 - 我如何修改下载代码以根据其公司名称保存每个 PDF - 可通过all_names = driver.find_elements_by_xpath("//div[@class='applicant-name']")获得?
目前,我正在使用下面的自动下载选项,我想下载逻辑必须进行调整(我宁愿已经下载具有正确名称的 PDF,而不是使用使用 Python 的肮脏解决方法保存后更改名称...)
chrome_options.add_experimental_option('prefs', {
"download.default_directory": "/Users/XXX/Downloads", #Change default directory for downloads
"download.prompt_for_download": False, #To auto download the file
"download.directory_upgrade": True,
"plugins.always_open_pdf_externally": True #It will not show PDF directly in chrome
})
【问题讨论】:
-
你不是少了括号吗? checkbox.click()
-
抱歉,当我添加括号时,它返回错误:“消息:元素不可交互”。然而,这个元素显然是可点击的,我可以手动完成——你可以在网站上自己查看。知道如何使用 Selenium 点击它吗?
标签: python html selenium web-scraping xpath