2014-04-24 76 views
1

最近我试图抓取Google搜索结果中的数据,看起来pyqt是一个很好的模块,可以在html中执行javascript并获得最终的html结果。然而,对于其他网站,它似乎是正确的。但是,对于Google搜索,它总是失败。我在这里学习的榜样: http://webscraping.com/blog/Scraping-JavaScript-webpages-with-webkit/如何通过pyqt获取html页面的最终结果?

的代码是:

import sys 
import time 
from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
from PyQt4.QtWebKit import * 

class Render(QWebPage): 

    def __init__(self, url): 
     self.app = QApplication(sys.argv) 
     QWebPage.__init__(self) 
     self.loadFinished.connect(self._loadFinished) 
     self.mainFrame().load(QUrl(url)) 
     self.app.exec_() 

    def _loadFinished(self, result): 
     self.frame = self.mainFrame() 
     self.app.quit() 

url1 = 'http://www.google.com/search?start=0&client=firefox-a&q=adidas&safe=off&pws=0&tbs=cdr%3A1%2Ccd_min%3A1%2F1%2F2002%2Ccd_max%3A1%2F1%2F2001&filter=0&num=10&access=a&oe=UTF-8&ie=UTF-8' 
url2 = 'http://www.google.com/search?start=0&client=firefox-a&q=adidas&safe=off&pws=0&tbs=cdr%3A1%2Ccd_min%3A1%2F1%2F2009%2Ccd_max%3A7%2F1%2F2009&filter=0&num=10&access=a&oe=UTF-8&ie=UTF-8' 
r = Render(url1) 
html = r.frame.toHtml() 
print type(html) 

outfile = open('page.html','w') 
outfile.write(html.toUtf8()) 
outfile.close() 
print 'finished!' 

然而,URL1和URL2的结果总是得到相同的结果,当我禁用了JavaScript的结果是一样的铬。那么我们该如何处理呢?我们如何获取Google搜索的最终html?

回答

0
import sys 
from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
from PyQt4.QtWebKit import * 

class Render(QWebPage): 
    def __init__(self, url): 
    self.app = QApplication(sys.argv) 
    QWebPage.__init__(self) 
    self.loadFinished.connect(self._loadFinished) 
    self.mainFrame().load(QUrl(url)) 
    self.app.exec_() 

    def _loadFinished(self, result): 
    self.frame = self.mainFrame() 
    self.app.quit() 

url = 'http://webscraping.com' 
r = Render(url) 
html = r.frame.toHtml() 

来源:http://webscraping.com/blog/Scraping-JavaScript-webpages-with-webkit/

+0

没有你......你只是张贴完全相同的代码作为OP了您的解决方案? – ChrisArmstrong