如何获取网页的真实源代码?
每次我使用像urllib2、requests、pycurl这样的标准库时,获取的源代码总是不完整。我想要获取的源代码就像我在Chrome、Firefox等浏览器中看到的一样。
我尝试这样做:
def go_to(link):
headers = {'User-Agent': USER_AGENT,
'Accept': ACCEPT,
'Accept-Encoding': ACCEPT_ENCODING,
'Accept-Language': ACCEPT_LANGUAGE,
'Cache-Control': CACHE_CONTROL,
'Connection': CONNECTION,
'Host': HOST}
req = urllib2.Request(link, None, headers)
response = urllib2.urlopen(req)
return response.read()
谢谢你!
抱歉我的英语不好。
更新:这是我从浏览器获取的完整代码:
<td colspan="1"><font class="spy1">1</font> <font class="spy14">192.3.10.113<script type="text/javascript">document.write("<font class=spy2>:<\/font>"+(TwoFiveFiveSix^OneOneSix)+(Zero0FourFour^ZeroSevenSeven)+(TwoFiveFiveSix^OneOneSix)+(TwoFiveFiveSix^OneOneSix))</script><font class="spy2">:</font>8088</font></td>
这是我脚本中获取的代码,不是完整的:
<font class="spy14">192.3.10.113<script type="text/javascript">document.write("<font class=spy2>:<\/font>"+(Eight7FiveSix^Seven1One)+(FiveZeroTwoOne^Two3Zero)+(Eight7FiveSix^Seven1One)+(Eight7FiveSix^Seven1One))</script></font>
2 个回答
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/
更新: 输出的类型是QString。 如果你想把它转换成字符串,可以使用:
html = r.frame.toHtml().toUtf8().data()