我已经到了使用Javascript和Python3进入网页抓取网页的混战时刻。我很清楚,我的靴子可能会与一匹死马接触,但我仍然想要画出我的六射手。这是西方的意大利面条;成为我的灰色帽子?Python 3,网络抓取和Javascript [Oh My]
::背景故事::
我使用Python 3.2.3。
我有兴趣为YTD,1年,3年,5年10年和/或用户定义股票的类似时间范围收集历史股票// etf // mutual_fund价格数据,ETF或共同基金。我在Morningstar.com上设置了我的网站,因为他们倾向于提供尽可能多的数据,而不一定要求登录;其他人如finance.google.com & c往往在他们提供的有关股票vs ETF vs共同基金的数据方面不一致。
使用晨星作为这一历史数据的权衡,或称之为“追踪总收益”,就是为了生成这些数据,他们使用Javascript。
以下是晨星一些示例链接:
我感兴趣 “后返回” 部分,上排左右的号码中Javascript制作的图表。
::试图到目前为止::
我已经证实了wget不使用Javascript玩;即使下载所有相关文件[css,.js,& c]也不允许我在浏览器或脚本中本地呈现javascript。在这里研究StackOverflow证实了这一点。我愿意在这里纠正。
我的研究告诉我机械化不存在Python3。无论如何,我试了一下,然后变成了Javert警察喊出“我知道!”在错误消息“模块不存在”。
::我听说过... ::
- >硒。然而,我的理解是,这需要Thy Favorite Browser实际打开一个网页,四处浏览,然后不关闭,因为Selenium没有“关闭此选项卡//窗口”命令//选项。如果我// my_user想要获取许多ETF,股票和/或共同基金的历史数据,该怎么办?这是很多标签//窗口在浏览器中打开,不一定需要打开。
- > httplib2。我认为这很好,但我怀疑它是否会使用Javascript。是否,例如使用.cache和get选项?
import httplib2
conn = httplib2.Http(".cache")
page = conn.request(u"http://the_url","GET")
- >风车。参见'Selenium'。然而,我却不够关键唱“拉曼恰之人”。
- > Google的webscraping代码。试图下载一个Javascript载入的页面会导致...积极的结果吗?
我读过关于必须“不使用浏览器模拟浏览器”的喋喋不休的问题。听起来像机械化,但不是我目前所了解的Python3。
::我的问题::
任何建议,指针,解决方案,或者 “看过来” 的方向?
非常感谢,
Miles,Dusty Desert Villager。
通过使用没有任何会话cookie检查的Ajax请求,至少过滤来自其他域的请求,他们使用JavaScript做基本上使你的工作真的很容易。 – 2012-08-03 23:52:49