我正在尝试从网站上抓取一些信息,但我无法阅读相关网页。页面似乎首先发送基本设置,然后发送更详细的信息。我的下载尝试似乎只捕获基本设置。到目前为止,我已经尝试过urllib和机械化。
Firefox和Chrome在显示页面时没有任何问题,但在查看页面源时我看不到我想要的部分。
示例网址为https://personal.vanguard.com/us/funds/snapshot?FundId=0542&FundIntExt=INT
例如,我想要从页面右下角开始的平均成熟度和平均持续时间。问题不是从页面中提取该信息,而是下载页面以便我可以提取信息。
答案 0 :(得分:2)
该页面使用JavaScript加载数据。 Firefox和Chrome只能运行,因为您启用了JavaScript - 尝试禁用它,您将获得一个大部分为空的页面。
Python本身无法做到这一点 - 你最好的妥协是使用类似Pamie之类的东西从Python控制真正的浏览器(如果你在Windows上,最简单的Internet Explorer)
答案 1 :(得分:1)
网站通过ajax加载数据。 Firebug显示了ajax调用。对于给定页面,数据从https://personal.vanguard.com/us/JSP/Funds/VGITab/VGIFundOverviewTabContent.jsf?FundIntExt=INT&FundId=0542
加载查看原始页面上的相应javascript代码:
<script>populator = new Populator({parentId:
"profileForm:vanguardFundTabBox:tab0",execOnLoad:true,
populatorUrl:"/us/JSP/Funds/VGITab/VGIFundOverviewTabContent.jsf?FundIntExt=INT&FundId=0542",
inline:fals e,type:"once"});
</script>
答案 2 :(得分:0)
原因是因为它在加载后执行AJAX调用。您还需要考虑搜索这些网址以获取其内容。
答案 3 :(得分:0)
正如RichieHindle所提到的,在Windows上最好的选择是使用WebBrowser类创建IE渲染引擎的实例,然后使用它来浏览网站。
该类为您提供对DOM树的完全访问权限,因此您可以随意使用它。
http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser(loband).aspx
答案 4 :(得分:0)
尝试iMacros。我非常积极地解决你的问题。