网络抓取问题网站

时间:2009-10-09 21:17:00

标签: python screen-scraping

我正在尝试从网站上抓取一些信息,但我无法阅读相关网页。页面似乎首先发送基本设置,然后发送更详细的信息。我的下载尝试似乎只捕获基本设置。到目前为止,我已经尝试过urllib和机械化。

Firefox和Chrome在显示页面时没有任何问题,但在查看页面源时我看不到我想要的部分。

示例网址为https://personal.vanguard.com/us/funds/snapshot?FundId=0542&FundIntExt=INT

例如,我想要从页面右下角开始的平均成熟度和平均持续时间。问题不是从页面中提取该信息,而是下载页面以便我可以提取信息。

5 个答案:

答案 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。我非常积极地解决你的问题。

http://www.iopus.com/imacros/firefox/?ref=fxmoz