當前位置:首頁 » 編程語言 » 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 瀏覽:612
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