支持代理的Python Webkit

3 投票
3 回答
3014 浏览
提问于 2025-04-16 22:44

我正在写一个Python脚本,用来抓取网页。我创建了一个webkit的网页视图对象,并使用open方法来加载网址。但是,我想通过一个代理来加载这个网址。
我该怎么做呢?如何把webkit和代理结合起来?哪个webkit类支持代理呢?

3 个回答

1

有没有现成的解决方案呢?

PyPhantomJS 是一个简单的工具,它不需要显示界面,基于 WebKit,使用 JavaScript 驱动。这个工具是用 PyQt4 和 Python 写的,可以在 Linux、Windows 和 Mac OS X 上运行。

它让你可以使用一个完整的无头 WebKit 浏览器,通过用 JavaScript 写的脚本来控制它。你可以用它做很多事情,比如抓取网页内容和支持代理。它是通过命令行来操作的。

你可以在这里查看 API 文档 这里

* 当我说抓取网页内容时,我的意思是你可以提取页面上的内容,甚至可以把页面的渲染结果保存到文件里。这里还有一个已经写好的抓取网页内容的 JavaScript 库 在这里

2

如果你在使用pyqt,可以用QApplicationProxy;如果你在用pygi,可以参考这个代码片段:

from gi.repository import WebKit
from gi.repository import Soup

proxy_uri = Soup.URI.new("http://127.0.0.1:8080")
session = WebKit.get_default_session().set_property("proxy-uri")
session.set_property("proxy-uri",proxy_uri)

参考链接:
PyGI
PyQt

4

试试下面的代码片段。(参考自 这个链接

import gtk, webkit
import ctypes
libgobject = ctypes.CDLL('/usr/lib/libgobject-2.0.so.0')
libwebkit = ctypes.CDLL('/usr/lib/libsoup-2.4.so.1')
libsoup = ctypes.CDLL('/usr/lib/libsoup-2.4.so.1')
libwebkit = ctypes.CDLL('/usr/lib/libwebkit-1.0.so')

proxy_uri = libsoup.soup_uri_new('http://127.0.0.1:8000') # set your proxy url

session = libwebkit.webkit_get_default_session()
libgobject.g_object_set(session, "proxy-uri", proxy_uri, None)

w = gtk.Window()
s = gtk.ScrolledWindow()
v = webkit.WebView()
s.add(v)
w.add(s)
w.show_all()

v.open('http://www.google.com')

希望这能对你有所帮助。

撰写回答