2012-04-29 3 views
1

私はこのUSLからHTMLソースを取得しようとしています: http://books.google.com/books?id=NZlV0M5Ije4C&dq=isbn:0470284889美しいスープページソースエラー

私は次のコードを使用:ただし、soup2からhtmlソースがほとんどのように見える

#!/usr/bin/env python 

import urllib, urllib2, urlparse, argparse, re 
from bs4 import BeautifulSoup 

def getPageSoup(address): 
    request = urllib2.Request(address, None, {'User-Agent':'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)'}) 
    urlfile = urllib2.urlopen(request) 
    page = urlfile.read() 
    urlfile.close() 
    print 'soup has been obtained!' 
    return BeautifulSoup(page) 

soup2 = getPageSoup(address) 
metadata = soup2.findAll("metadata_row")#this content is present when viewing from the web browser 

をGoogleブックスのページからの情報源:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html><head><title>Quantitative Trading: How to Build Your Own Algorithmic Trading Business - Ernie Chan - Google Books</title><script>(function(){function a(c){this.t={};this.tick=function(c,e,b){b=void 0!=b?b:(new Date).getTime();this.t[c]=[b,e]};this.tick("start",null,c)}var d=new a;window.jstiming={Timer:a,load:d};try{var f=null;window.chrome&amp;&amp;window.chrome.csi&amp;&amp;(f=Math.floor(window.chrome.csi().pageT));null==f&amp;&amp;window.gtbExternal&amp;&amp;(f=window.gtbExternal.pageT());null==f&amp;&amp;window.external&amp;&amp;(f=window.external.pageT);f&amp;&amp;(window.jstiming.pt=f)}catch(g){};})(); 
    </script><link href="/books/css/_9937a87cb2905e754d8d5e36995f224d/kl_about_this_book_kennedy_full_bundle.css" rel="stylesheet" type="text/css"/></head></html> 

urllib2と私のウェブブラウザのHTMLソースは非常に異なります。正しいページソースを取得するにはどうすればよいですか?

ありがとうございます!

答えて

0

正しいページソースです。すべての可視コンテンツはJavaScriptによって生成されます。したがって、urllibを使用して実際のコンテンツを取得することは不可能です。ブラウザの拡張機能、Webkitバインディングなどを使用してください。

+0

ありがとうございます!それは本格的なJSエンジンとQTバインディングをインストールする必要があり、かなり不便です。しかし、まったく同じ、私は他の方法はないと思う... – ejang