我必须在公司的Intranet上刮一个非常非常简单的页面,以使我们的内部流程之一自动化(使函数的输出成功与否)。
我发现以下示例:
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://sitescraper.net'
r = Render(url)
html = r.frame.toHtml()
来自http://blog.sitescraper.net/2010/06/scraping-javascript-webpages-in-
python.html
,它几乎是完美的。我只需要能够提供身份验证即可查看页面。
我一直在浏览PyQt4的文档,但我会承认很多内容已经超出了我的脑海。如果有人可以提供帮助,我将不胜感激。
编辑: 不幸的是,gruszczy的方法对我不起作用。当我通过urllib2做类似的事情时,我使用下面的代码,它起作用了……
username = 'user'
password = 'pass'
req = urllib2.Request(url)
base64string = base64.encodestring('%s:%s' % (username, password))[:-1]
authheader = "Basic %s" % base64string
req.add_header("Authorization", authheader)
handle = urllib2.urlopen(req)
我想到了。这就是我最后得到的结果,以防它可以帮助其他人。
#!/usr/bin/python
# -*- coding: latin-1 -*-
import sys
import base64
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)
username = 'username'
password = 'password'
base64string = base64.encodestring('%s:%s' % (username, password))[:-1]
authheader = "Basic %s" % base64string
headerKey = QByteArray("Authorization")
headerValue = QByteArray(authheader)
url = QUrl(url)
req = QtNetwork.QNetworkRequest()
req.setRawHeader(headerKey, headerValue)
req.setUrl(url)
QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().load(req)
self.app.exec_()
def _loadFinished(self, result):
self.frame = self.mainFrame()
self.app.quit()
def main():
url = 'http://www.google.com'
r = Render(url)
html = r.frame.toHtml()
你好,我想使用python 3.x和BeautifulSoup从一个带有年龄验证弹出式窗口的网站上刮取数据。如果不点击“是”来表示“你是否超过21岁”,我就无法获得底层的文本和图像。谢谢你的支持。 编辑:谢谢,通过一些注释的帮助,我看到我可以使用cookie,但不确定如何管理/存储/调用请求包中的cookie。 编辑4:取得了一些进展,更新的代码如下。我设法在XML代码中找到了元素,现在我只需要设
问题内容: 我遇到过许多教程,它们解释了如何使用node.js刮取不需要身份验证/登录的公共网站。 有人可以解释如何抓取需要使用node.js登录的网站吗? 问题答案: 使用Mikeal的请求库,您需要启用cookie支持,如下所示: 因此,您首先应该在该站点上(手动)创建一个用户名,并在向该站点发出POST请求时将用户名和密码作为参数传递。之后,服务器将使用Cookie进行响应,该请求将记住该C
问题内容: 我的问题是:如何从网站抓取数据,但是直到单击例如“Danhsáchchậm”,该数据才显示。我已经非常认真地尝试,当您单击“Danhsáchchậm”时,这是onclick事件,该事件触发了一些javascript函数js函数之一是从服务器获取数据并将其插入标签/占位符,然后在此时,您可以使用firefox之类的方法检查数据,是的,数据将显示给网页上的用户/查看者。因此,我们又该如何以
问题内容: 我已经写了很多刮板,但是我不确定如何处理无限滚动条。如今,大多数网站,Facebook,Pinterest等都有无限滚动条。 问题答案: 您可以使用硒来刮除Twitter或Facebook之类的无限滚动网站。 步骤1:使用pip安装Selenium 第2步:使用下面的代码自动执行无限滚动并提取源代码 步骤3:根据需要打印数据。
问题内容: 如何通过JavaScript访问页面的HTTP响应标头? 问题答案: 不幸的是,没有一个API可以为你的初始页面请求提供HTTP响应标头。那是这里发布的原始问题。也有人反复询问,因为有些人想获得原始页面请求的实际响应头,而不发出另一个请求。 对于AJAX请求: 如果通过AJAX发出HTTP请求,则可以使用getAllResponseHeaders()方法获取响应标头。它是XMLHttp
我正在抓取这个网页的用户名,在滚动后加载用户 指向页面的Url:“http://www.quora.com/Kevin-Rose/followers" 我知道页面上的用户数(本例中的用户数为43812),如何滚动页面直到加载所有用户?我在互联网上搜索过同样的代码,在任何地方我都能找到几乎相同的代码行: driver.execute_script("window.scroll至(0)") 如何确定垂