【发布时间】:2020-04-20 11:05:42
【问题描述】:
此代码从https://www.asx.com.au/asx/statistics/prevBusDayAnns.do 抓取 HTML 表格,并下载特定 ASX 代码和标题的 PDF 文件。当 for 循环遍历“数据”中的 ASX 代码时,它会遍历第一个 ASX 代码五次,从而创建相同 PDF 的五个副本。例如,在下面的代码中将有五个 TWD 副本。 for 循环遍历第一个 ASX 代码的次数等于“数据”中 ASX 代码的数量。例如,如果有十个代码,我最终会得到十个 TWD 的 PDF 文件副本。这只发生在第一个 ASX 代码上,其他一切都很好。发生这种情况的任何原因?
相关代码:
driver.get("https://www.asx.com.au/asx/statistics/prevBusDayAnns.do")
data = ['TWD', 'GEM', 'AT1','TKF','GDF']
asxcodes = []
for d in data:
try:
asxcode = driver.find_element_by_xpath("//table//tr//td[text()='{}']/following-sibling::td[3]/a[contains(.,'{}')]".format(d,"Becoming a substantial holder")).get_attribute("href")
asxcodes.append(asxcode)
except:
pass
完整代码:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
import time
chromeOptions = webdriver.ChromeOptions()
prefs = {"plugins.always_open_pdf_externally": True,"download.default_directory" : r"C:\Users\Harrison Pollock\Desktop\The Smarts\Becoming a Substantial Holder"}
chromeOptions.add_experimental_option("prefs",prefs)
chromedriver = r"C:\Users\Harrison Pollock\Downloads\Python\chromedriver_win32\chromedriver.exe"
driver = webdriver.Chrome(executable_path=r"C:\Users\Harrison Pollock\Downloads\Python\chromedriver_win32\chromedriver.exe",chrome_options=chromeOptions)
driver.get("https://www.asx.com.au/asx/statistics/prevBusDayAnns.do")
data = ['TWD', 'GEM', 'AT1','TKF','GDF'
asxcodes = []
for d in data:
try:
asxcode = driver.find_element_by_xpath("//table//tr//td[text()='{}']/following-sibling::td[3]/a[contains(.,'{}')]".format(d,"Becoming a substantial holder")).get_attribute("href")
asxcodes.append(asxcode)
except:
pass
for asxcode in asxcodes:
driver.get(asxcode)
WebDriverWait(driver, 15).until(EC.element_to_be_clickable((By.XPATH, "//input[@value='Agree and proceed']"))).click()
time.sleep(10)
【问题讨论】:
-
axcode肯定总是一个匹配元素吗?