㈠ 我想寫一個批量python登錄網站,並且登錄後指定一個網址判斷網頁是否是我想要的東西,把我
我們將會按照以下步驟進行:
提取登錄需要的詳細信息
執行站點登錄
爬取所需要的數據
在本教程中,我使用了以下包(可以在 requirements.txt 中找到):
requests
lxml
步驟一:研究該網站
打開登錄頁面
進入以下頁面 「」。你會看到如下圖所示的頁面(執行注銷,以防你已經登錄)
仔細研究那些我們需要提取的詳細信息,以供登錄之用
在這一部分,我們會創建一個字典來保存執行登錄的詳細信息:
1. 右擊 「Username or email」 欄位,選擇「查看元素」。我們將使用 「name」 屬性為 「username」 的輸入框的值。「username」將會是 key 值,我們的用戶名/電子郵箱就是對應的 value 值(在其他的網站上這些 key 值可能是 「email」,「 user_name」,「 login」,等等)。
2. 右擊 「Password」 欄位,選擇「查看元素」。在腳本中我們需要使用 「name」 屬性為 「password」 的輸入框的值。「password」 將是字典的 key 值,我們輸入的密碼將是對應的 value 值(在其他網站key值可能是 「userpassword」,「loginpassword」,「pwd」,等等)。
3. 在源代碼頁面中,查找一個名為 「csrfmiddlewaretoken」 的隱藏輸入標簽。「csrfmiddlewaretoken」 將是 key 值,而對應的 value 值將是這個隱藏的輸入值(在其他網站上這個 value 值可能是一個名為 「csrftoken」,「 authenticationtoken」 的隱藏輸入值)。列如:「」。
最後我們將會得到一個類似這樣的字典:
payload = {
"username": "<USER NAME>",
"password": "<PASSWORD>",
"csrfmiddlewaretoken": "<CSRF_TOKEN>"
}
請記住,這是這個網站的一個具體案例。雖然這個登錄表單很簡單,但其他網站可能需要我們檢查瀏覽器的請求日誌,並找到登錄步驟中應該使用的相關的 key 值和 value 值。
步驟2:執行登錄網站
對於這個腳本,我們只需要導入如下內容:
import requests
from lxml import html
首先,我們要創建 session 對象。這個對象會允許我們保存所有的登錄會話請求。
session_requests = requests.session()
第二,我們要從該網頁上提取在登錄時所使用的 csrf 標記。在這個例子中,我們使用的是 lxml 和 xpath 來提取,我們也可以使用正則表達式或者其他的一些方法來提取這些數據。
login_url = ""
result = session_requests.get(login_url)
tree = html.fromstring(result.text)
authenticity_token = list(set(tree.xpath("//input[@name='csrfmiddlewaretoken']/@value")))[0]
接下來,我們要執行登錄階段。在這一階段,我們發送一個 POST 請求給登錄的 url。我們使用前面步驟中創建的 payload 作為 data 。也可以為該請求使用一個標題並在該標題中給這個相同的 url 添加一個參照鍵。
result = session_requests.post(
login_url,
data = payload,
headers = dict(referer=login_url)
)
步驟三:爬取內容
現在,我們已經登錄成功了,我們將從 bitbucket dashboard 頁面上執行真正的爬取操作。
url = ''
result = session_requests.get(
url,
headers = dict(referer = url)
)
為了測試以上內容,我們從 bitbucket dashboard 頁面上爬取了項目列表。我們將再次使用 xpath 來查找目標元素,清除新行中的文本和空格並列印出結果。如果一切都運行 OK,輸出結果應該是你 bitbucket 賬戶中的 buckets / project 列表。
tree = html.fromstring(result.content)
bucket_elems = tree.findall(".//span[@class='repo-name']/")
bucket_names = [bucket.text_content.replace("n", "").strip() for bucket in bucket_elems]
print bucket_names
你也可以通過檢查從每個請求返回的狀態代碼來驗證這些請求結果。它不會總是能讓你知道登錄階段是否是成功的,但是可以用來作為一個驗證指標。
例如:
result.ok # 會告訴我們最後一次請求是否成功
result.status_code # 會返回給我們最後一次請求的狀態
就是這樣。
㈡ Python打開網頁並另存為靜態html怎麼實現
用Python的requests庫解決這個問題比較簡單,常式如下:
importsys
importrequests
reload(sys)
sys.setdefaultencoding('utf-8')
r=requests.get('xxx網址')
fh=open('test.html','w')
fh.write(r.text)
fh.close()
說明一下,requests庫不是Python內置的,不過很流行,很多發行版都帶,沒帶的話就去requests官網去下載,或者用 pip install requests命令安裝最新版。
這個程序里在保存文件前,還需要把字元編碼設置一下,用的是自帶的sys庫。
㈢ python怎麼用代碼打開網路
咨詢記錄 · 回答於2021-10-07
㈣ python如何定時提取網頁信息並自動保存
有現成的工具可以自動提取保存,比如mutoubrowse也可以定時保存。
㈤ Python 製作網頁打不開 直接跳到打開或者保存文件
需要對Lighttpd進行配置,指明py文件是作為cgi程序運行的。
修改配置文件:/etc/lighttpd/lighttpd.conf
在以下小節內添加python內容:
server.moles = ( "mod_cgi", )
cgi.assign = (
".py" => "/usr/bin/python"
)
㈥ 如何用python把網頁上的文本內容保存下來
1、了解Python如何獲取網頁內容。
㈦ 如何批量打開網頁
推薦Replace Pioneer,很容易做到,步驟:
1. 准備一個文本文件a.txt,需要如下格式:
http://www..com/1.html
http://www..com/2.html
...
註:地址必須以http://開頭
2. 打開Replace Pioneer,打開菜單Tools->Batch Runner.
3. 點擊Import List把准備好的a.txt 導入
4. 如果需要保存的名字不合理,可以在set output filename里修改。
5. 選中下面的change output file directory並在右邊輸入文件的保存目錄
6. 點擊Copy/Download按鈕,所有文件就會以指定的文件名存入指定的目錄。
==========================================
Replace Pioneer下載:
http://www.mind-pioneer.com/replace
㈧ 想批處理打開網頁並保存,批處理批量打開網頁我知道了,但打開的網頁怎麼保存呢
單單使用批處理是無法實現的,為了你這個問題。我確實想了不少辦法,到最後在論壇看到一個curl工具,支持多種協議。其用法也很簡單。唯一不一樣的地方,這個工具不會用IE打開網頁,只會把網頁保存下來。
例:
curl
www..com
>c:\.htm
這樣就會在C盤下保存www..com為.htm
如果你需要修改的話,可以HI我,或者在追問里把你的以前的代碼帖出來,修改一下就好了。
補充:我昨天晚上試驗了幾次,大部分網頁保存下來後都能打開,有些特別的不行。我不能保證100%完成,但90%應該是可以的。不管怎麼說,也相當於給你減少一部分工作量了。
現在我需要你的代碼,或者是你代碼讀取的那個文本里的網址的排列順序。這樣就可以給你寫出來了。或者加Q聊,363158440