我的目的是从https://www.shareinvestor.com/prices/price_download_zip_file.zip?type=history_all&market=bursa
下载 zip 文件
这是此网页中的链接https://www.shareinvestor.com/prices/price_download .html#/?type=price_download_all_stocks_bursa。然后将其保存到此目录中"/home/vinvin/shKLSE/
(我使用的是 pythonaywhere)。然后将其解压并解压到目录中的 csv 文件。
代码运行到最后,没有错误,但没有下载。手动点击https://www.shareinvestor.com/prices/price_download_zip_file.zip?type=history_all&market=bursa时会自动下载zip 文件。
使用了我的带有工作用户名和密码的代码。使用真实的用户名和密码,以便更容易理解问题。
#!/usr/bin/python
print "hello from python 2"
import urllib2
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from pyvirtualdisplay import Display
import requests, zipfile, os
display = Display(visible=0, size=(800, 600))
display.start()
profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.folderList', 2)
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.download.dir', "/home/vinvin/shKLSE/")
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', '/zip')
for retry in range(5):
try:
browser = webdriver.Firefox(profile)
print "firefox"
break
except:
time.sleep(3)
time.sleep(1)
browser.get("https://www.shareinvestor.com/my")
time.sleep(10)
login_main = browser.find_element_by_xpath("//*[@href='/user/login.html']").click()
print browser.current_url
username = browser.find_element_by_id("sic_login_header_username")
password = browser.find_element_by_id("sic_login_header_password")
print "find id done"
username.send_keys("bkcollection")
password.send_keys("123456")
print "log in done"
login_attempt = browser.find_element_by_xpath("//*[@type='submit']")
login_attempt.submit()
browser.get("https://www.shareinvestor.com/prices/price_download.html#/?type=price_download_all_stocks_bursa")
print browser.current_url
time.sleep(20)
dl = browser.find_element_by_xpath("//*[@href='/prices/price_download_zip_file.zip?type=history_all&market=bursa']").click()
time.sleep(30)
browser.close()
browser.quit()
display.stop()
zip_ref = zipfile.ZipFile(/home/vinvin/sh/KLSE, 'r')
zip_ref.extractall(/home/vinvin/sh/KLSE)
zip_ref.close()
os.remove(zip_ref)
HTML 片段:
<li><a href="/prices/price_download_zip_file.zip?type=history_all&market=bursa">All Historical Data</a> <span>About 220 MB</span></li>
请注意,当我复制代码段时会显示 &。它在查看源代码中是隐藏的,所以我猜它是用 JavaScript 编写的。
我发现的观察
home/vinvin/shKLSE
即使我运行代码没有错误,目录也没有创建我尝试下载一个小得多的 zip 文件,它可以在一秒钟内完成,但在等待 30 秒后仍然没有下载。
dl = browser.find_element_by_xpath("//*[@href='/prices/price_download_zip_file.zip?type=history_daily&date=20170519&market=bursa']").click()