当前位置:首页 » 编程语言 » python浏览器操作

python浏览器操作

发布时间: 2023-05-26 23:13:37

① 怎么用python简单的制作一个网页

1、打开sublime text 3,新建一个PY文件。

② 怎么python代码在一个浏览器中同时开启两个tab页面

python的webbrowser模块支持碰悄察对笑茄浏览器运派进行一些操作,主要有以下三个方法:

import webbrowser
webbrowser.open(url, new=0, autoraise=True)
webbrowser.open_new(url)
webbrowser.open_new_tab(url)

③ 如何使用python进行浏览器行为模拟

你可以使用python的webbrowser库来模老世基拟浏览返链器:

1
2
3
4
5
6
7

url = ''

# Open URL in a new tab, if a browser window is already open.
webbrowser.open_new_tab(url + 'doc/')

# Open URL in new window, raising the window if possible.
webbrowser.open_new(url)

或者使用python的第三方库侍谨, selenium

1
2
3
4
5
6
7
8
9
10
11
12
13

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

browser = webdriver.Firefox()

browser.get('
)
assert 'Yahoo!' in browser.title

elem = browser.find_element_by_name('p') # Find the search box
elem.send_keys('seleniumhq' + Keys.RETURN)

browser.quit()

④ 如何用Python开发一个简单的Webkit浏览器

让我们从最简单的 PyQt 的 Webkit 用例开始吧:输入 url,打开窗口并在窗口中加载页面。

这个例子十分短小,连 import 语句和空行在内也只有 13 行代码。

Python

import sys

from PyQt4.QtWebKit import QWebView
from PyQt4.QtGui import QApplication
from PyQt4.QtCore import QUrl

app = QApplication(sys.argv)

browser = QWebView()
browser.load(QUrl(sys.argv[1]))
browser.show()

app.exec_()

当你通过命令行将 url 传给脚本时,程序会加载 url 并且在窗口中显示加载完成的页面。

现在,看似你已经有一个“命令者橡行浏览器”啦!至少比物银 python 的 requests 模块强多了,甚至比 Lynx 还略高一筹,因为我们的浏览器还可以加载 JavaScript 脚本呢。但是目前为止还没有跟 Lynx 拉开差距,因为在启用浏览器的时候只能通过命令行传入 url。那么,必然需要通过某种方式把需要加载的 url 传入浏览器。没错,就是地址栏!

添加地址栏

其实地址栏的实现非常简单,我们只需要在窗口顶端加一个输入框就够了。用户
在文本框中输入 url 之后,浏览器就会加载这个地址。下面,我们将用到 QLineEdit
控件来实现输入框。鉴于我们的浏览器现在有地址栏和浏览器显示框两部分,因此还要给我们的应用增加一个网格布局。

Python

import sys

from PyQt4.QtGui import QApplication
from PyQt4.QtCore import QUrl
from PyQt4.QtWebKit import QWebView
from PyQt4.QtGui import QGridLayout, QLineEdit, QWidget

class UrlInput(QLineEdit):
def __init__(self, browser):
super(UrlInput, self).__init__()
self.browser = browser
# add event listener on "enter" pressed
self.returnPressed.connect(self._return_pressed)

def _return_pressed(self):
url = QUrl(self.text())
# load url into browser frame
browser.load(url)

if __name__ == "__main__":
app = QApplication(sys.argv)

# create grid layout
grid = QGridLayout()
browser = QWebView()
url_input = UrlInput(browser)
# url_input at row 1 column 0 of our grid
grid.addWidget(url_input, 1, 0)
# browser frame at row 2 column 0 of our grid
grid.addWidget(browser, 2, 0)

# main app window
main_frame = QWidget()
main_frame.setLayout(grid)
main_frame.show()

# close app when user closes window
sys.exit(app.exec_())

到这里,我们已经有一个浏览器的雏形啦!看上去和当年的 Google
Chrome 还有几分相像呢,首蚂旁毕竟两者采用了相同的渲染引擎。现在,你可以在输入框中输入 url ,程序便会将地址传入浏览器,接着渲染出所有的
HTML 页面和 JavaScript 脚本并展示出来。

添加开发工具

一个浏览器最有趣也最重要的部分是什么?当然是各种各样的开发工具了!一个没有开发者控制台的浏览器怎么能算是浏览器呢?所以,我们的 Python 浏览器当然也要有一些开发者工具才行。

现在,我们就来添加一些类似于 Chrome 的开发者工具中
“Network”
标签的功能吧!这个功能就是简单地追踪浏览器引擎在加载页面的时候所执行的所有请求。在浏览器主页面的下方,我们将通过一个表来显示这些请求。简单起见,
我们只会记录登录的 url、返回的状态码和响应的内容类型。

首先我们要通过 QTableWidget 组件创建一个表格,表头包括需要存储的字段名称,表格可以根据每次新插入的记录来自动调整大小。

Python

class RequestsTable(QTableWidget):
header = ["url", "status", "content-type"]

def __init__(self):
super(RequestsTable, self).__init__()
self.setColumnCount(3)
self.setHorizontalHeaderLabels(self.header)
header = self.horizontalHeader()
header.setStretchLastSection(True)
header.setResizeMode(QHeaderView.ResizeToContents)

def update(self, data):
last_row = self.rowCount()
next_row = last_row + 1
self.setRowCount(next_row)
for col, dat in enumerate(data, 0):
if not dat:
continue
self.setItem(last_row, col, QTableWidgetItem(dat))

想要追踪所有请求的话,我们还需要对 PyQt
的内部构件有更深入的了解。了解到,Qt 提供了一个 NetworkAccessManager类作为 API
接口,通过调用它可以监控应用加载页面时所执行的请求。我们需要自己编写一个继承自 NetworkAccessManager
的子类,添加必要的事件监听器,然后使用我们自己编写的 manager 来通知 webkit 视图执行相应的请求。

首先我们需要以 NetworkAccessManager 为基类创建我们自己的网络访问管理器。

Python

class Manager(QNetworkAccessManager):
def __init__(self, table):
QNetworkAccessManager.__init__(self)
# add event listener on "load finished" event
self.finished.connect(self._finished)
self.table = table

def _finished(self, reply):
"""Update table with headers, status code and url.
"""
headers = reply.rawHeaderPairs()
headers = {str(k):str(v) for k,v in headers}
content_type = headers.get("Content-Type")
url = reply.url().toString()
# getting status is bit of a pain
status = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)
status, ok = status.toInt()
self.table.update([url, str(status), content_type])

在这里需要提醒大家的是, Qt 的某些实现并不像想象中那么简单明了,比如说从响应中获取状态码就十分繁琐。首先,你得把请求对象的类属性作为参数传入 response 的方法 .attribute() 中,.attribute() 方法的返回值是 QVariant 类型而非 int 类型。接着,需要调用内置函数 .toInt() 将其转换成一个包含两个元素的元组,最终得到响应的状态码。

现在,我们终于有了一个记录请求的表和一个监控网络的 manager,接下来只要把他们聚拢起来就可以了。

Python

if __name__ == "__main__":
app = QApplication(sys.argv)

grid = QGridLayout()
browser = QWebView()
url_input = UrlInput(browser)
requests_table = RequestsTable()

manager = Manager(requests_table)
# to tell browser to use network access manager
# you need to create instance of QWebPage
page = QWebPage()
page.setNetworkAccessManager(manager)
browser.setPage(page)

grid.addWidget(url_input, 1, 0)
grid.addWidget(browser, 2, 0)
grid.addWidget(requests_table, 3, 0)

main_frame = QWidget()
main_frame.setLayout(grid)
main_frame.show()

sys.exit(app.exec_())

现在,运行浏览器程序,在地址栏键入 url,就可以看到在主页面下方的记录表中记录下的所有请求。

如果你有兴趣的话,还可以为浏览器添加很多新的功能:

通过content-type添加筛选功能
添加记录表的排序功能
添加计时器
高亮显示出错的请求(比如说把错误信息置为红色)
显示出更为具体的请求内容,比如说完整的头信息、响应内容、请求方法等。
增加一个重复发送请求并加载出来的选项。比如说用户可以点击在记录表中的请求来重试请求。

其实还有太多的功能可以继续完善和改进,你可以一一尝试一下,这会是一个非常有趣而且收获良多的学习过程。但是如果想把这些功能都说完,估计都能写一本书了。所以限于篇幅,本文就不一一介绍了,感兴趣的朋友可以参考其他书籍和网上教程。

增加解析自定义 JavaScript 脚本的功能

我们终于迎来最后一个功能了!就是解析在页面中包含的 JavaScript 脚本。

基于我们之前已经打下的基础,要完成这个功能非常简单。我们只需要在添加一个 QLineEdit 组件,把它和页面联系起来,然后调用 evaulateJavaScript 方法就可以了。

Python

class JavaScriptEvaluator(QLineEdit):
def __init__(self, page):
super(JavaScriptEvaluator, self).__init__()
self.page = page
self.returnPressed.connect(self._return_pressed)

def _return_pressed(self):
frame = self.page.currentFrame()
result = frame.evaluateJavaScript(self.text())

下面是这个功能的示例。看,我们的开发者工具已经整装待发了!

Python

if __name__ == "__main__":
# ...
# ...
page = QWebPage()
# ...
js_eval = JavaScriptEvaluator(page)

grid.addWidget(url_input, 1, 0)
grid.addWidget(browser, 2, 0)
grid.addWidget(requests_table, 3, 0)
grid.addWidget(js_eval, 4, 0)

现在唯一缺少的就是在页面中不能执行 Python 脚本。你可以开发自己的浏览器,提供对 JavaScript 和 Python 的支持,这样其他开发者就可以针对你的浏览器开发应用了。

后退、前进和其他页面操作

我们在前面已经使用了 QWebPage 对象来开发浏览器,当然作为一个合格的浏览器,我们也需要为终端用户提供一些重要功能。Qt 的网页对象支持很多不同操作,我们可以把它们全都添加到浏览器中。

现在我们可以先尝试着添加“后退”、“前进”和“刷新”这几个操作。你可以在界面上添加这些操作按钮,简单起见,这里只加一个文本框来执行这些动作。

Python

class ActionInputBox(QLineEdit):
def __init__(self, page):
super(ActionInputBox, self).__init__()
self.page = page
self.returnPressed.connect(self._return_pressed)

def _return_pressed(self):
frame = self.page.currentFrame()
action_string = str(self.text()).lower()
if action_string == "b":
self.page.triggerAction(QWebPage.Back)
elif action_string == "f":
self.page.triggerAction(QWebPage.Forward)
elif action_string == "s":
self.page.triggerAction(QWebPage.Stop)

和之前一样,我们要创建一个 ActionInputBox 的实例,把参数传入页面对象并把输入框对象添加到页面中。

⑤ 安装好Python后,怎么在浏览器输出,就像PHP安装好环境后输出localhost一样可以在浏览器显示效果

Python可以作为web开发语言来进行使用,但是它不是专门用来做web开发来使用的,所以你无法直接安装以后就能在浏览器当中输出。当然既然可以用来做web语言开发,也就是或嫌衫它在进行一定配置以后可以在浏览器当中进行输出。

我们先编写hello.py,实现Web应用程序的WSGI处理函数:

#hello.py

defapplication(environ,start_response):
start_response('200OK',[('Content-Type','text/html')])
return'<h1>Hello,web!</h1>'

然后,再编写一个server.py,负责启动WSGI服务器,加载application()函数:

#server.py
#从wsgiref模块导入:
fromwsgiref.simple_serverimportmake_server
#导芹则腔入我们自己编写的application函数:
fromhelloimportapplication

#创建一个服务器,IP地址为空,端口是8000,处理盯桥函数是application:
httpd=make_server('',8000,application)
print"ServingHTTPonport8000..."
#开始监听HTTP请求:
httpd.serve_forever()

确保以上两个文件在同一个目录下,然后在命令行输入python server.py来启动WSGI服务器

启动成功后,打开浏览器,输入http://localhost:8000/,就可以看到结果了:

⑥ 怎么用python控制默认浏览器

运用 selenium 去实现对浏览器控制,可以对Firefox,Chrome, Phantom等。

fromseleniumimportwebdriver
browser=webdriver.Firefox()
browser.get("http://XX.XX.com/")

跳转网站,网页dom控制,跳转一应俱全。

希望能帮到你!

⑦ python如何操作已经在浏览器中打开的网页

使用selenium的chrome或firefox的webdriver打开浏览器
driver.get(url)
#访问你的网页
from=driver.find_elements_by_xpath("xxx")
通过xpath或id等方法锁定到网页上表单的那个元素后,用
from.send_keys("xxx")

⑧ python调用微信内置浏览器

1、首先F12或者右键审查元素进入开发者模式,点击Emulation。
2、其次点击Network,把Spoofuseragent改成Other,并把下面的带复制进去,有三句。
3、然后回车然后刷新页面即可。Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程

⑨ Python怎么调用IETester浏览器

1
首先,我们需要在自己的电脑上下载一个IETester软件。

2
下载之后,我们需要自己进行安装。安装完成之后,双击打开软件。

3
我们可以看到软件的上方有关于新建各个IE浏览器版本的的选项卡。

4
我们点击新建一个IE6,软件就会帮我们新建一个IE6环境下的页面。

5
这时,软件默认打开的一个页面。我们需要将我们需要打开的页面在电脑装的IE浏览器中打开,然后复制到IETester软件中。

6
然后我们点击开发者工具—DebugBar插件,在页面的下方就会出现代码。

7
我们点击DOM中的文档,再点击HTML,就可以查看HTML的代码。下面的style表示元素的样式表。

8
然后我们就可以参照这些内容修改代码了。需要注意使用此软件时,有时IE的某个版本会有卡机的时候,就是不能用,这是正常现象

热点内容
内置存储卡可以拆吗 发布:2025-05-18 04:16:35 浏览:336
编译原理课时设置 发布:2025-05-18 04:13:28 浏览:378
linux中进入ip地址服务器 发布:2025-05-18 04:11:21 浏览:613
java用什么软件写 发布:2025-05-18 03:56:19 浏览:32
linux配置vim编译c 发布:2025-05-18 03:55:07 浏览:107
砸百鬼脚本 发布:2025-05-18 03:53:34 浏览:945
安卓手机如何拍视频和苹果一样 发布:2025-05-18 03:40:47 浏览:742
为什么安卓手机连不上苹果7热点 发布:2025-05-18 03:40:13 浏览:803
网卡访问 发布:2025-05-18 03:35:04 浏览:511
接收和发送服务器地址 发布:2025-05-18 03:33:48 浏览:372