[英]Python 3, Web-scraping, and Javascript [Oh My]
我已经到了使用Javascript和Python3进入web-scraping网页的混战。 我很清楚我的靴子可能正在与一匹死马接触,但无论如何我觉得我还要画六枪。 这是意大利面西部; 做我的灰帽子?
::背景故事::
我使用的是Python 3.2.3。
我有兴趣为用户定义的股票,etf或者收集YTD,1年,3年,5年10年的历史股票/ etf // mutual_fund价格数据......和/或类似的时间框架共同基金。 我在Morningstar.com上设置我的网站,因为他们倾向于提供尽可能多的数据而不一定需要登录; 其他人,例如finance.google.com&c,他们提供的有关股票与etfs和共同基金的数据往往不一致。
将Morningstar用于此历史数据或称为“尾随总回报”的权衡,就是为了生成这些数据,他们使用Javascript。
以下是Morningstar的一些示例链接:
我对Jails生成的图表中的“尾随返回”部分,第一行左右的数字感兴趣。
::试图到目前为止::
我已经确认wget不能使用Javascript; 即使下载所有相关文件[css,.js,&c]也不允许我在浏览器或脚本中本地呈现javascript。 StackOverflow上的研究证实了这一点。 我愿意在这里纠正。
我的研究告诉我,Python3不存在Mechanize。 无论如何我试过了,然后变成警察Javert喊道:“我知道了!” 在错误消息“模块不存在”。
::我听说过...... ::
- >硒。 但是,我的理解是,这需要Thy Favorite Browser实际打开一个网页,导航,然后不关闭,因为Selenium没有“关闭此选项卡//窗口”命令//选项。 如果我// my_user想要获得许多etfs,股票和/或共同基金的历史数据怎么办? 这是很多标签//窗口在浏览器中打开,不一定要打开。
- > httplib2的。 我认为这很好,但我怀疑它是否会使用Javascript。 是吗,例如使用.cache和get选项?
import httplib2
conn = httplib2.Http(".cache")
page = conn.request(u"http://the_url","GET")
- >风车。 见'Selenium'。 然而,我非常关键地唱“拉曼查之人”。
- > Google的网页编写代码。 试图下载一个载有Javascript的页面会导致......积极的结果吗?
我读过有关“不使用浏览器模拟浏览器”的喋喋不休。 听起来像Mechanize,但不是我目前理解的Python3。
::我的问题::
任何建议,指示,解决方案,或“查看这里”的方向?
非常感谢,
万里,尘土飞扬的沙漠村民。
当页面通过javascript加载数据时,它必须向服务器发出请求以通过XMLHttpRequest函数(XHR)获取该数据。 您可以使用wget查看他们正在发出的请求,然后自己创建!
要了解他们正在做出哪些请求,请使用Web Inspector(Chrome和Safari)或Firebug(Firefox)。 以下是在Chrome中执行此操作的方法:
扳手/工具/开发工具/网络(工具顶部的标签)/底部的XHR过滤器。
如果仔细查看XHR请求URL,您会注意到所有尾随返回的格式都相同:
http://performance.morningstar.com/Performance/cef/trailing-total-returns.action?t=
你只需要指定t
。 例如:
http://performance.morningstar.com/Performance/cef/trailing-total-returns.action?t=VAW http://performance.morningstar.com/Performance/cef/trailing-total-returns.action?t=INTC http://performance.morningstar.com/Performance/cef/trailing-total-returns.action?t=VHCOX
现在你可以wget
那些URI和直接解析出数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.