目标:希望使用Python自动化从http://www.tocom.or.jp/historical/download.html下载各种.csv文件(但这不是主要问题)
细节:特别是,我正在尝试下载“Tick Data”的csv文件(从底部开始的第五个标题,可用的5天。
问题:当我看到此网页的源代码时,查找“Tick Data”我看到对这5个.csv文件的引用,但它们没有通常的href标记。当我使用Python(urllib)时,我需要知道这5个.csv文件的URL,但不知道如何获取它们。
这不是Python本身的问题,而是关于如何找到可以从网页下载的某些.csv的URL。因此,没有提供代码。
答案 0 :(得分:3)
该页面使用JavaScript创建URL:
<select name="tick">
<option value="TOCOMprice_20121122.csv">Nov 22, 2012</option>
<option value="TOCOMprice_20121121.csv">Nov 21, 2012</option>
<option value="TOCOMprice_20121120.csv">Nov 20, 2012</option>
<option value="TOCOMprice_20121119.csv">Nov 19, 2012</option>
<option value="TOCOMprice_20121116.csv">Nov 16, 2012</option>
</select>
<input type="button" onClick="location.href='/data/tick/' + document.form.tick.value;"
value="Download" style="width:7em;" />
它结合了浏览器将使用的路径与当前站点。所以每个URL都是:
http://www.tocom.or.jp + /data/tick/ + TOCOMprice_*yearmonthday*.csv
从外观上看,数据仅涵盖工作日。
这些很容易拼凑成自动化网址:
import requests
from datetime import datetime, timedelta
start = datetime.now() - timedelta(days=1)
base = 'http://www.tocom.or.jp/data/tick/TOCOMprice_'
next = start
for i in range(5):
r = requests.get(base + next.strftime('%Y%m%d') + '.csv')
# Save r.content somewhere
next += timedelta(days=1)
while next.weekday() >= 5: # Sat = 5, Sun = 6
next += timedelta(days=1)
我使用requests
作为更易于使用的API,但如果您愿意,也可以使用urllib2
执行此任务。
答案 1 :(得分:1)
使用Chrome w / Dev Tools,Firefox w / Firebug或Fiddler查看下载按钮时的请求URL。
(例如,我在11月22日看到这个:http://www.tocom.or.jp/data/tick/TOCOMprice_20121122.csv)
答案 2 :(得分:0)
您可以确定下载链接使用浏览器的开发人员菜单等。我使用chrome,我看到链接是
http://www.tocom.or.jp/data/souba_d/souba_d_20121126_20121123_0425.csv
这个网址结构似乎很容易猜到,页面上还有另一个链接:
http://www.tocom.or.jp/historical/keishiki_souba_d.html
指示如何构建拉力。一个好的选择就是以5分钟的间隔构建csv拉力。
祝你好运!