[英]How can we download multiple CSV files from a URL?
我正在測試這段代碼。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
d = webdriver.Chrome('C:\\Utility\\chromedriver.exe')
d.get('https://developers.humana.com/Resource/PCTFilesList?fileType=innetwork')
# stuck here...
#links =
for link in links:
d.get(link)
# click page 2, 3, 4, etc., up to 100
for page in range(1, 100)
page.click
d.quit()
因此,我嘗試在第 1 頁下載 CSV 文件,然后單擊第 2 頁並下載這些文件,然后單擊第 3 頁並再次下載這些文件。 我認為我在這里分享的示例代碼應該是一個開始,但它肯定需要一些改進才能正常工作。 知道我該怎么做嗎? 謝謝
wait = WebDriverWait(d, 20)
d.get('https://developers.humana.com/Resource/PCTFilesList?fileType=innetwork')
for i in range(2,101):
time.sleep(1)
j=i
if i>5:
j=5
#links=d.find_elements(By.CSS_SELECTOR,"a.download-pct-file-link")
#print(len(links))
#for link in links:
# link.click()
wait.until(EC.element_to_be_clickable((By.XPATH, f"//a[@data-dt-idx='{j}']"))).click()
print(f"//a[@data-dt-idx='{j}']")
我通過頁面將它轉到 go,同時在第 5 頁后將值切換為 click 為 5。data-dx-idx 從 2-5 變為 5,然后保持在 5。如果你很可能沒有 time.sleep()處理陳舊。
進口:
import time
您可以使用此解決方案:
import requests
length = 1
url = "https://developers.humana.com/Resource/GetData?fileType=innetwork&sEcho=1&iColumns=3&sColumns=%2C%2C\
&iDisplayStart=0&iDisplayLength="
r = requests.get(url+str(length))
json_data = r.json()
length = json_data['iTotalRecords']
print("files ", length)
r = requests.get(url+str(length))
json_data = r.json()
for e in json_data['aaData']:
download_url = "https://developers.humana.com/Resource/DownloadPCTFile?fileType=innetwork&fileName=" + e['name']
print(e['name'])
print("download url: ", download_url)
然后只需循環下載文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.