每当我使用像urllib2这样的标准库,请求时,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()
谢谢!
抱歉我的英语不好。
UPD: 这是浏览器的完整代码:
<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>
答案 0 :(得分:2)
由于形成网页可能涉及javascript,AJAX
调用,为了确保您获得与浏览器中相同的源代码,您需要使用实际使用真实浏览器的工具,比如selenium
:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get(link)
print browser.page_source
答案 1 :(得分: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/
<强> UPD:强> 输出类型是QString。 如果要将其转换为字符串使用
html = r.frame.toHtml().toUtf8().data()