欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

用Python爬取需要登錄的網站

系統 1639 0

最近我必須執行一項從一個需要登錄的網站上爬取一些網頁的操作。它沒有我想象中那么簡單,因此我決定為它寫一個輔助教程。

在本教程中,我們將從我們的bitbucket賬戶中爬取一個項目列表。

教程中的代碼可以從我的 Github 中找到。

我們將會按照以下步驟進行:

  • 提取登錄需要的詳細信息

  • 執行站點登錄

  • 爬取所需要的數據

在本教程中,我使用了以下包(可以在 requirements.txt 中找到):

requests

lxml

#步驟一:研究該網站

打開登錄頁面

進入以下頁面 “bitbucket.org/account/signin”。你會看到如下圖所示的頁面(執行注銷,以防你已經登錄)

用Python爬取需要登錄的網站_第1張圖片

仔細研究那些我們需要提取的詳細信息,以供登錄之用

在這一部分,我們會創建一個字典來保存執行登錄的詳細信息:

1. 右擊 “Username or email” 字段,選擇“查看元素”。我們將使用 “name” 屬性為 “username” 的輸入框的值。“username”將會是 key 值,我們的用戶名/電子郵箱就是對應的 value 值(在其他的網站上這些 key 值可能是 “email”,“ user_name”,“ login”,等等)。

用Python爬取需要登錄的網站_第2張圖片

2. 右擊 “Password” 字段,選擇“查看元素”。在腳本中我們需要使用 “name” 屬性為 “password” 的輸入框的值。“password” 將是字典的 key 值,我們輸入的密碼將是對應的 value 值(在其他網站key值可能是 “userpassword”,“loginpassword”,“pwd”,等等)。

用Python爬取需要登錄的網站_第3張圖片

3. 在源代碼頁面中,查找一個名為 “csrfmiddlewaretoken” 的隱藏輸入標簽。“csrfmiddlewaretoken” 將是 key 值,而對應的 value 值將是這個隱藏的輸入值(在其他網站上這個 value 值可能是一個名為 “csrftoken”,“ authenticationtoken” 的隱藏輸入值)。列如:“Vy00PE3Ra6aISwKBrPn72SFml00IcUV8”。

用Python爬取需要登錄的網站_第4張圖片

最后我們將會得到一個類似這樣的字典:

            
              在學習過程中有什么不懂得可以加我的
python學習交流扣扣qun,784758214
群里有不錯的學習視頻教程、開發工具與電子書籍。
與你分享python企業當下人才需求及怎么從零基礎學習好python,和學習什么內容
payload = {

"username": "
              
                ",

"password": "
                
                  ",

"csrfmiddlewaretoken": "
                  
                    "

}

                  
                
              
            
          

請記住,這是這個網站的一個具體案例。雖然這個登錄表單很簡單,但其他網站可能需要我們檢查瀏覽器的請求日志,并找到登錄步驟中應該使用的相關的 key 值和 value 值。

#步驟2:執行登錄網站

對于這個腳本,我們只需要導入如下內容:

            
              import requests

from lxml import html

            
          

##首先,我們要創建 session 對象。這個對象會允許我們保存所有的登錄會話請求。

session_requests = requests.session()

##第二,我們要從該網頁上提取在登錄時所使用的 csrf 標記。在這個例子中,我們使用的是 lxml 和 xpath 來提取,我們也可以使用正則表達式或者其他的一些方法來提取這些數據。

            
              login_url = "https://bitbucket.org/account/signin/?next=/"

result = session_requests.get(login_url)

tree = html.fromstring(result.text)

authenticity_token = list(set(tree.xpath("http://input[@name='csrfmiddlewaretoken']/@value")))[0]


            
          

更多關于xpath 和lxml的信息可以在這里找到。

接下來,我們要執行登錄階段。在這一階段,我們發送一個 POST 請求給登錄的 url。我們使用前面步驟中創建的 payload 作為 data 。也可以為該請求使用一個標題并在該標題中給這個相同的 url 添加一個參照鍵。

            
              result = session_requests.post(

login_url,

data = payload,

headers = dict(referer=login_url)

)

            
          

#步驟三:爬取內容

現在,我們已經登錄成功了,我們將從 bitbucket dashboard 頁面上執行真正的爬取操作。

            
              url = 'https://bitbucket.org/dashboard/overview'

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 inbucket_elems]

print bucket_names


            
          

你也可以通過檢查從每個請求返回的狀態代碼來驗證這些請求結果。它不會總是能讓你知道登錄階段是否是成功的,但是可以用來作為一個驗證指標。

如果你依然在編程的世界里迷茫,可以加入我們的Python學習扣qun:784758214,看看前輩們是如何學習的。交流經驗。從基礎的python腳本到web開發、爬蟲、django、數據挖掘等,零基礎到項目實戰的資料都有整理。送給每一位python的小伙伴!分享一些學習的方法和需要注意的小細節,點擊加入我們的 python學習者聚集地

例如:

result.ok # 會告訴我們最后一次請求是否成功

result.status_code # 會返回給我們最后一次請求的狀態

就是這樣。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 99热这里都是国产精品 | 久久久久亚洲精品 | 久久人人爽人人爽 | 欧美一区二区三区中文字幕 | 污污的网站在线观看 | 欧美一级片在线播放 | 亚洲精品午夜视频 | 日本欧美一区二区三区不卡视频 | 国产精品成人在线 | 中文在线一区二区 | 91视频苹果版 | 奇米视频在线 | 欧美第四页 | 色客成人网 | 人阁色第四影院在线电影 | 26uuu中文字幕 | 亚洲精品国产成人 | 九九热精品视频在线播放 | 91在线播放网站 | 欧美日韩专区国产精品 | 高清一区二区三区四区五区 | 国产精品久久久久久无码人妻 | 日韩欧美一区二区三区免费观看 | 成人综合激情 | 亚洲不卡视频 | 99久久精品国产自免费 | 亚洲精品第一页 | www.久久色 | 日本一区二区久久久 | 国产精品1区2区 | 成人综合久久精品色婷婷 | 国产精品免费久久久免费 | 狠狠干综合 | 中文字幕一区在线观看视频 | 国产噜噜噜精品免费 | 国产亚洲精品久久久久久一区二区 | 天堂国产| 成人午夜影院 | 精品免费国产一区二区三区 | 人人做人人爽人人爱 | 亚洲一区中文字幕 |