我有一个Python脚本,可以从网站上获取数据(www.nowgoal.com网站). 因为这个网页包含Javascript代码,所以我使用PyQt4呈现页面,然后将其转换为Html,最后解析所需的数据。 一切正常,但最近他们添加了一个Javascript警告消息,防止页面被正确呈现。 通过查看源页面,底部是警报消息的Javascript函数:
`<script type ="text/javascript" >
if(getCookie("enurl_bak")==null)
{
writeCookie("enurl_bak", "1");
if(confirm('Nowgoal.net is our spare link\n\n Please add to your favorites')) {try{window.external.addFavorite('http://www.nowgoal.net','LiveScore - NowGoal.com');}catch(e) {alert('Sorry, fail to add favorits. Your browser can\'t finish this operation. Please use Ctrl+D to add.');}}
}
</script>`
此时,设置一个cookie(name=enurl\u bak”value<;>null)即可跳过警报。 问题是我不知道该怎么做,我到处找遍了,但是我没有找到一个关于如何使用PyQt4设置cookies的真正例子。在
以下是我用来呈现网页的内容:
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
from PyQt4 import QtNetwork
class Render(QWebPage):
def __init__(self, url):
self.app = QApplication(sys.argv)
QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().page().setNetworkAccessManager(networkAccessManager)
self.mainFrame().load(QUrl(url))
self.app.exec_()
def _loadFinished(self, result):
self.frame = self.mainFrame()
self.app.quit()
url = 'http://www.nowgoal.com'
r = Render(url)
html = r.frame.toHtml()
我还尝试了setHtml(来自urllib2)而不是load(qrl)PyQt4方法,方法是删除Javascript警报函数,但没有成功。在
下面的测试脚本成功设置并读取cookie,从而阻止显示警报消息。但是,这只适用于测试.html页面:因为一些未知的原因(webkit错误?),它不适用于www.nowgoal.com网站网站。在
测试.html:
^{pr2}$更新:
似乎没有webkit错误:我只需要根据answer by SkY3d设置域。在
是的!! 完成了:)
再次感谢艾克胡默让我走上了正确的道路!在
相关问题 更多 >
编程相关推荐