2013-11-21 72 views
0

我想使用的urllib2和beautifulSoup凑这个网站https://www.spdrs.com/product/fund.seam?ticker=SPY。但是,我认为我从urllib2获得的html不完整。下面显示的节点<span>之间的任何内容都不是从urllib2读取的字符串的一部分。的urllib2的urlopen HTML不全

<span xmlns="http://www.w3.org/1999/xhtml" id="performancePanel"> 
    bunch of divs in here. 
</span> 

为什么会出现这种情况?我怀疑它与xmlns有关,因为我从来没有见过任何人将这个属性放在一个跨度上。

+0

我不能看到你所提到的跨度标签。也许网站改变了,另一种可能是,这个标签是在页面加载后由JS生成的。 – PasteBT

+0

@PasteBT感谢您的回复。您可以尝试在控制台中搜索ID。我在Chrome上,我可以在控制台中找到它。加载页面后我没有看到任何ajax调用。当你说这个部分是由javascript生成的,你的意思是代码的一部分被硬编码成javascript并在DOM加载后插入它?这似乎不正确.. – zsljulius

回答

1

如果您在浏览器中查看源代码,你会得到的urllib得到了同样的观点。

你可以看到它看起来是这样的:

<span id="performancePanel"></span> 

请注意有在跨度没有申报单。该div由javascript填充。 看看源的底部,你会看到一些JS代码和注释

<!-- load performance and holdings content by ajax --> 

我觉得这是它被加载。

由于数据是由JavaScript加载,这将是困难经由的urllib除非你反向工程的JavaScript,并找出它使用的底层API和然后刮那些刮。

如果是太难了,你可能想使用硒刮数据进行调查。