最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python requests實(shí)現(xiàn)Cookie登錄的全流程

 更新時(shí)間:2026年03月17日 08:47:44   作者:竹林818  
這篇文章主要介紹了如何使用Python的requests庫自動(dòng)化登錄一個(gè)需要復(fù)雜鑒權(quán)的網(wǎng)站,并生成報(bào)表,作者詳細(xì)描述了登錄過程中遇到的幾個(gè)問題,包括CSRF token、重定向處理和Cookie的使用,并提供了詳細(xì)的代碼示例和解決方法,需要的朋友可以參考下

背景:為什么我要跟Cookie死磕?

上個(gè)月接了個(gè)內(nèi)部需求,要每天定時(shí)從公司用的一個(gè)項(xiàng)目管理平臺(tái)(類似Jira)拉取任務(wù)數(shù)據(jù),生成報(bào)表。這個(gè)平臺(tái)沒有提供官方API,只能通過網(wǎng)頁端操作。手動(dòng)操作太耗時(shí),我就想寫個(gè)Python腳本自動(dòng)化。

一開始想得太簡單:找到登錄接口,POST用戶名密碼,拿到Cookie,然后用這個(gè)Cookie去訪問數(shù)據(jù)頁面。聽起來很順對吧?結(jié)果一上手就發(fā)現(xiàn),這個(gè)網(wǎng)站的登錄流程比我想的復(fù)雜得多——有CSRF token,登錄后還有一次302重定向,而且Cookie的生效路徑和域名都有講究。我前后折騰了三天,把requestsSession對象、CookieJar以及HTTP狀態(tài)碼查了個(gè)遍,才終于讓腳本穩(wěn)定跑起來。

如果你也遇到需要處理復(fù)雜登錄鑒權(quán)的網(wǎng)站,特別是那些用傳統(tǒng)表單登錄、有各種安全校驗(yàn)的,我踩過的這些坑或許能幫你省下不少時(shí)間。

問題分析:為什么直接發(fā)POST請求不行?

我最開始的代碼長這樣(已脫敏):

import requests

login_url = 'https://example.com/login'
data_url = 'https://example.com/api/data'

payload = {
    'username': 'my_user',
    'password': 'my_pass'
}

# 嘗試1:直接登錄
resp = requests.post(login_url, data=payload)
print(resp.status_code)  # 輸出200,好像成功了?

# 嘗試用這個(gè)resp的cookies去訪問數(shù)據(jù)
cookies = resp.cookies
data_resp = requests.get(data_url, cookies=cookies)
print(data_resp.status_code)  # 輸出403!被拒絕了。

第一個(gè)200狀態(tài)碼給了我虛假的希望。后來仔細(xì)看data_resp.text,發(fā)現(xiàn)返回的是登錄頁面的HTML——意思就是根本沒登錄成功,服務(wù)器把我踢回去了。

排查過程:

  1. 檢查登錄響應(yīng):我打印了resp.history,發(fā)現(xiàn)是一個(gè)空列表,說明沒有重定向?不對,感覺有問題。
  2. 手動(dòng)模擬對比:我用瀏覽器開發(fā)者工具,仔細(xì)對比了我的腳本請求和瀏覽器正常登錄發(fā)出的請求。
  3. 發(fā)現(xiàn)關(guān)鍵差異
    • 缺失的Token:瀏覽器登錄時(shí),POST數(shù)據(jù)里除了賬號(hào)密碼,還有一個(gè)叫csrfmiddlewaretoken的字段,值是一長串字符。這個(gè)token是從登錄頁的HTML表單里提前獲取的。
    • Cookie的接收:瀏覽器在GET登錄頁面時(shí),服務(wù)器就已經(jīng)下發(fā)了一個(gè)sessionid的Cookie。后續(xù)的POST登錄請求,會(huì)帶上這個(gè)Cookie一起發(fā)送。而我的腳本是直接POST,完全沒理會(huì)登錄頁。
    • 重定向處理:瀏覽器登錄成功后,會(huì)收到一個(gè)302狀態(tài)碼,然后自動(dòng)跳轉(zhuǎn)到首頁。我的腳本沒有自動(dòng)跟隨重定向(requests默認(rèn)是跟隨的),但即便跟隨了,因?yàn)榍懊娴膯栴},跳轉(zhuǎn)后的請求也缺乏正確的會(huì)話狀態(tài)。

所以,核心問題不是“發(fā)送登錄請求”,而是模擬一次完整的瀏覽器會(huì)話:先獲取頁面和初始Cookie,提取隱藏的校驗(yàn)參數(shù),再發(fā)起登錄,并妥善處理登錄后的跳轉(zhuǎn),最后維持這個(gè)會(huì)話狀態(tài)去訪問其他頁面。

核心實(shí)現(xiàn)

1. 使用Session對象維持會(huì)話狀態(tài)

這是我學(xué)到的第一個(gè),也是最重要的教訓(xùn):對于需要登錄的連續(xù)請求,一定要用requests.Session()。

Session對象會(huì)幫你自動(dòng)管理Cookies。它會(huì)在同一個(gè)會(huì)話內(nèi),自動(dòng)將服務(wù)器返回的Cookie保存下來,并在后續(xù)的請求中自動(dòng)帶上,完美模擬瀏覽器的行為。不用你再手動(dòng)去resp.cookies然后塞到下一個(gè)請求里。

import requests

# 創(chuàng)建會(huì)話,這是所有操作的基礎(chǔ)
session = requests.Session()
# 可以設(shè)置一個(gè)通用的請求頭,更像瀏覽器
session.headers.update({
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
})

這里有個(gè)坑:有些網(wǎng)站會(huì)檢查User-Agent,用默認(rèn)的python-requests可能會(huì)被拒絕。所以最好一開始就設(shè)置一個(gè)常見的瀏覽器UA。

2. 獲取登錄頁并解析CSRF Token

很多Web框架(如Django、Flask)為了防御CSRF攻擊,會(huì)在表單里埋一個(gè)隨機(jī)token。你必須先訪問登錄頁(GET請求),拿到這個(gè)token,才能用于接下來的POST請求。

同時(shí),這個(gè)GET請求會(huì)讓服務(wù)器下發(fā)初始的會(huì)話Cookie(比如sessionid),Session對象會(huì)自動(dòng)為我們保存。

login_page_url = 'https://example.com/login'

# 第一次GET請求,獲取頁面和初始Cookie
login_page_response = session.get(login_page_url)
print(f"獲取登錄頁狀態(tài)碼: {login_page_response.status_code}")

# 這里假設(shè)token在HTML中一個(gè)name='csrfmiddlewaretoken'的input標(biāo)簽里
# 我們使用lxml來解析(需要安裝:pip install lxml)
from lxml import html

tree = html.fromstring(login_page_response.text)
# 嘗試通過input標(biāo)簽的name屬性獲取csrf token
# 注意:不同網(wǎng)站token的字段名和獲取方式可能不同,這里是常見情況
csrf_token = tree.xpath('//input[@name="csrfmiddlewaretoken"]/@value')
if csrf_token:
    csrf_token = csrf_token[0]
    print(f"成功提取CSRF Token: {csrf_token[:20]}...")  # 打印前20位
else:
    # 如果xpath沒找到,可能需要檢查網(wǎng)頁源碼,看看token藏在哪里
    # 也可能網(wǎng)站用了其他名稱,如`authenticity_token`, `_token`等
    print("警告:未找到CSRF Token,可能需要調(diào)整解析方式!")
    # 有時(shí)token可能在meta標(biāo)簽里://meta[@name="csrf-token"]/@content

注意這個(gè)細(xì)節(jié):token的名稱和獲取方式因網(wǎng)站而異。必須用瀏覽器的“檢查元素”功能,仔細(xì)查看登錄表單的源碼,找到那個(gè)隱藏的<input>字段。這是成功的第一步。

3. 構(gòu)造登錄請求并正確處理重定向

現(xiàn)在,我們有了初始Cookie(在session里),也有了CSRF Token,可以構(gòu)造POST請求了。

login_action_url = 'https://example.com/login'  # 通常和登錄頁是同一個(gè)URL
payload = {
    'username': 'your_username_here',
    'password': 'your_password_here',
    'csrfmiddlewaretoken': csrf_token,  # 關(guān)鍵:把上一步提取的token加進(jìn)去
    # 可能還有其他隱藏字段,如`next`(登錄后跳轉(zhuǎn)地址)
}

print("正在發(fā)起登錄POST請求...")
# 用session.post,它會(huì)自動(dòng)帶上GET登錄頁時(shí)獲得的Cookie
login_response = session.post(login_action_url, data=payload)

# 重要:檢查登錄是否真的成功
print(f"登錄POST請求狀態(tài)碼: {login_response.status_code}")
print(f"登錄后重定向歷史: {[r.status_code for r in login_response.history]}")
print(f"最終URL: {login_response.url}")

關(guān)鍵點(diǎn)分析

  • login_response.history:如果登錄成功,服務(wù)器通常會(huì)返回302303狀態(tài)碼進(jìn)行重定向。requests會(huì)自動(dòng)跟隨,并將這些中間響應(yīng)記錄在history列表里。最后一個(gè)響應(yīng)才是重定向終點(diǎn)(如首頁)的內(nèi)容。所以,看到history里有302,且最終URL是登錄后的頁面(而不是登錄頁本身),是一個(gè)好跡象。
  • login_response.url:檢查最終停留的頁面URL,如果還是登錄頁的URL,那大概率是登錄失敗了(賬號(hào)錯(cuò)誤、token無效等)。

4. 驗(yàn)證登錄狀態(tài)并訪問目標(biāo)數(shù)據(jù)

如何確認(rèn)session已經(jīng)處于登錄狀態(tài)?一個(gè)簡單的方法是嘗試訪問一個(gè)需要登錄才能看的頁面。

# 訪問一個(gè)登錄后才能訪問的頁面,比如個(gè)人主頁或API接口
profile_url = 'https://example.com/dashboard'
profile_response = session.get(profile_url)

print(f"訪問個(gè)人頁狀態(tài)碼: {profile_response.status_code}")
if profile_response.status_code == 200:
    # 可以進(jìn)一步檢查返回內(nèi)容里是否有登錄用戶的特征信息
    if "歡迎回來" in profile_response.text or "Dashboard" in profile_response.text:
        print("? 登錄狀態(tài)驗(yàn)證成功!")
    else:
        print("??  狀態(tài)碼200,但內(nèi)容可能不對,需要檢查。")
else:
    print(f"? 訪問失敗,狀態(tài)碼: {profile_response.status_code},登錄可能未成功。")

驗(yàn)證成功后,你就可以用這個(gè)已經(jīng)攜帶了有效登錄Cookie的session對象,去任意訪問需要鑒權(quán)的接口了。

# 最終訪問我們最初想要的數(shù)據(jù)接口
target_data_url = 'https://example.com/api/v1/tasks'
data_response = session.get(target_data_url)

if data_response.status_code == 200:
    data = data_response.json()  # 假設(shè)接口返回JSON
    print(f"成功獲取數(shù)據(jù),共 {len(data)} 條記錄。")
    # ... 處理你的數(shù)據(jù)
else:
    print(f"獲取數(shù)據(jù)失敗: {data_response.status_code}")
    print(data_response.text)

完整代碼示例

下面是一個(gè)整合了所有步驟、稍作抽象、可直接修改運(yùn)行的完整腳本。請將your_username_here、your_password_here以及URL替換成你的目標(biāo)網(wǎng)站信息。

import requests
from lxml import html
import time

class WebsiteLoginFetcher:
    """一個(gè)用于處理帶Cookie登錄的示例類"""

    def __init__(self, base_url):
        self.base_url = base_url.rstrip('/')
        self.session = requests.Session()
        # 設(shè)置一個(gè)像瀏覽器的請求頭
        self.session.headers.update({
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
            'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
        })

    def get_csrf_token(self, login_page_url):
        """從登錄頁面HTML中提取CSRF Token"""
        print(f"[1] 正在獲取登錄頁面并提取Token: {login_page_url}")
        try:
            resp = self.session.get(login_page_url, timeout=10)
            resp.raise_for_status()  # 如果狀態(tài)碼不是200,拋出異常
        except requests.exceptions.RequestException as e:
            print(f"  獲取登錄頁失敗: {e}")
            return None

        # 使用lxml解析HTML
        tree = html.fromstring(resp.text)
        
        # 嘗試幾種常見的CSRF Token存放位置
        token = None
        # 方式1: 在input隱藏字段中
        token_elements = tree.xpath('//input[@name="csrfmiddlewaretoken"]/@value')
        if not token_elements:
            # 方式2: 其他常見名稱
            for name in ['csrf_token', '_token', 'authenticity_token', 'csrf']:
                token_elements = tree.xpath(f'//input[@name="{name}"]/@value')
                if token_elements:
                    break
        if not token_elements:
            # 方式3: 在meta標(biāo)簽中
            token_elements = tree.xpath('//meta[@name="csrf-token"]/@content')

        if token_elements:
            token = token_elements[0]
            print(f"  成功提取Token: {token[:30]}...")
        else:
            print("  警告:未能在頁面中找到CSRF Token??赡苄枰謩?dòng)分析頁面結(jié)構(gòu)。")
            # 打印部分頁面源碼以便調(diào)試
            # print(resp.text[:2000])
        return token

    def login(self, login_url, username, password, extra_form_data=None):
        """執(zhí)行登錄操作"""
        print(f"[2] 正在執(zhí)行登錄...")
        # 1. 獲取Token
        csrf_token = self.get_csrf_token(login_url)
        if not csrf_token:
            print("  登錄中止:無法獲取CSRF Token。")
            return False

        # 2. 構(gòu)造登錄數(shù)據(jù)
        login_data = {
            'username': username,
            'password': password,
            'csrfmiddlewaretoken': csrf_token,  # 關(guān)鍵字段
        }
        if extra_form_data:
            login_data.update(extra_form_data)

        # 3. 發(fā)起登錄POST請求
        try:
            # 注意:有些網(wǎng)站登錄后不希望自動(dòng)重定向,可以設(shè)置`allow_redirects=False`先看看
            resp = self.session.post(login_url, data=login_data, timeout=15, allow_redirects=True)
        except requests.exceptions.RequestException as e:
            print(f"  登錄請求失敗: {e}")
            return False

        print(f"  登錄POST狀態(tài)碼: {resp.status_code}")
        print(f"  重定向歷史: {[h.status_code for h in resp.history]}")
        print(f"  最終URL: {resp.url}")

        # 4. 簡單判斷登錄是否成功
        # 條件1: 有重定向歷史(通常302)
        # 條件2: 最終URL不是登錄頁本身
        if resp.history and login_url not in resp.url:
            print("  ? 登錄流程看起來成功(發(fā)生了重定向)。")
            return True
        else:
            print("  ? 登錄可能失?。ㄎ窗l(fā)生預(yù)期重定向或仍停留在登錄頁)。")
            # 可以打印響應(yīng)內(nèi)容的前500字符幫助調(diào)試
            # print("響應(yīng)內(nèi)容預(yù)覽:", resp.text[:500])
            return False

    def fetch_protected_data(self, data_url):
        """使用已登錄的session訪問受保護(hù)的數(shù)據(jù)"""
        print(f"[3] 正在訪問受保護(hù)數(shù)據(jù): {data_url}")
        try:
            resp = self.session.get(data_url, timeout=10)
            print(f"  數(shù)據(jù)請求狀態(tài)碼: {resp.status_code}")
            if resp.status_code == 200:
                return resp.text  # 或者 resp.json()
            else:
                print(f"  請求失敗,響應(yīng)內(nèi)容: {resp.text[:200]}")
                return None
        except requests.exceptions.RequestException as e:
            print(f"  數(shù)據(jù)請求異常: {e}")
            return None

# ========== 使用示例 ==========
if __name__ == '__main__':
    # ?。?!請?zhí)鎿Q為你的實(shí)際信息 ?。?!
    BASE_URL = 'https://example.com'  # 網(wǎng)站根地址
    LOGIN_PAGE_URL = f'{BASE_URL}/login'  # 登錄頁面地址
    USERNAME = 'your_username_here'
    PASSWORD = 'your_password_here'
    TARGET_DATA_URL = f'{BASE_URL}/api/some_data'  # 你想爬的數(shù)據(jù)地址

    fetcher = WebsiteLoginFetcher(BASE_URL)

    # 執(zhí)行登錄
    is_logged_in = fetcher.login(LOGIN_PAGE_URL, USERNAME, PASSWORD)
    
    if is_logged_in:
        print("\n登錄成功!開始獲取數(shù)據(jù)...")
        # 可以加個(gè)短暫延遲,避免請求過快
        time.sleep(1)
        data = fetcher.fetch_protected_data(TARGET_DATA_URL)
        if data:
            print("數(shù)據(jù)獲取成功!")
            # 這里處理你的數(shù)據(jù),比如解析JSON或HTML
            # print(data[:500]) # 打印前500字符看看
        else:
            print("數(shù)據(jù)獲取失敗。")
    else:
        print("\n登錄失敗,請檢查賬號(hào)、密碼、網(wǎng)絡(luò)或網(wǎng)站結(jié)構(gòu)是否變化。")

踩坑記錄

坑1:忽略初始GET請求和CSRF Token

  • 現(xiàn)象:直接POST賬號(hào)密碼,返回200但實(shí)際未登錄。
  • 原因:沒獲取登錄頁下發(fā)的初始Cookie和表單里的隱藏Token。
  • 解決:老老實(shí)實(shí)先GET登錄頁,用lxmlBeautifulSoup解析出Token,并用Session對象維持Cookie。

坑2:重定向(302)處理不當(dāng)

  • 現(xiàn)象:登錄請求返回200,但history為空,url還是登錄頁。
  • 原因:網(wǎng)站可能用了JavaScript跳轉(zhuǎn),或者登錄失敗時(shí)也返回200并展示錯(cuò)誤信息在登錄頁。requests的自動(dòng)重定向只針對3xx狀態(tài)碼。
  • 解決:不要只看最終狀態(tài)碼。檢查response.history是否有302,并對比response.url是否跳轉(zhuǎn)到了登錄后的頁面(如首頁、儀表盤)。更可靠的方法是登錄后立即訪問一個(gè)需要登錄的頁面來驗(yàn)證。

坑3:Cookie作用域(Domain/Path)問題

  • 現(xiàn)象:登錄成功,用session訪問/dashboard正常,但訪問/api/v1/data卻返回403。
  • 原因:服務(wù)器設(shè)置的Cookie可能指定了Path(如Path=/web)或Domainrequests.SessionCookieJar會(huì)嚴(yán)格按照這些屬性來匹配和發(fā)送Cookie。如果API的路徑不在Cookie的Path范圍內(nèi),請求就不會(huì)帶上這個(gè)Cookie。
  • 解決:用print(session.cookies)查看所有Cookie的詳細(xì)信息。如果真是作用域問題,可能需要調(diào)整請求的URL,或者與后端溝通(如果是自己的項(xiàng)目)。對于爬蟲,有時(shí)需要“欺騙”一下,但需注意合規(guī)性。

坑4:Session未正確復(fù)用

  • 現(xiàn)象:我把登錄的代碼寫在一個(gè)函數(shù)里,函數(shù)內(nèi)部創(chuàng)建了session并登錄成功。但在函數(shù)外部,我又用了一個(gè)新的requests.get去訪問數(shù)據(jù),結(jié)果失敗。
  • 原因requests.get()是獨(dú)立的函數(shù)調(diào)用,不會(huì)使用函數(shù)內(nèi)部創(chuàng)建的那個(gè)session對象的狀態(tài)。
  • 解決:將session對象作為類的屬性(如上面的示例)或全局變量,確保在整個(gè)流程中使用的都是同一個(gè)session實(shí)例。

小結(jié)

搞定Python requests的Cookie登錄,核心就兩點(diǎn):Session對象維持狀態(tài),完整模擬瀏覽器的“GET取Token -> POST帶Token登錄 -> 跟隨跳轉(zhuǎn)”流程。過程中最花時(shí)間的往往不是寫代碼,而是用開發(fā)者工具仔細(xì)分析網(wǎng)站的請求細(xì)節(jié)。下次再遇到,你就知道該從哪里下手了。如果想更深入,可以研究一下如何處理更復(fù)雜的認(rèn)證(如OAuth 2.0)、驗(yàn)證碼自動(dòng)識(shí)別,或者使用selenium應(yīng)對純JavaScript渲染的登錄場景。

以上就是使用Python requests實(shí)現(xiàn)Cookie登錄的全流程的詳細(xì)內(nèi)容,更多關(guān)于Python requests實(shí)現(xiàn)Cookie登錄的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python自動(dòng)化快速實(shí)現(xiàn)將HTML轉(zhuǎn)換為PDF格式

    Python自動(dòng)化快速實(shí)現(xiàn)將HTML轉(zhuǎn)換為PDF格式

    HTML(超文本標(biāo)記語言)是一種用于創(chuàng)建網(wǎng)頁的標(biāo)準(zhǔn)標(biāo)記語言,主要用于定義內(nèi)容的結(jié)構(gòu)與布局,在今天的文章中,我們就來看看如何在?Python?中將?HTML?快速轉(zhuǎn)換為?PDF,實(shí)現(xiàn)高效與精準(zhǔn)的文檔處理,希望對大家有所幫助
    2026-04-04
  • python中return不返回值的問題解析

    python中return不返回值的問題解析

    在本篇文章里小編給各位分享的是一篇關(guān)于python中return不返回值的問題解析,需要的朋友們可以學(xué)習(xí)下。
    2020-07-07
  • Python打包EXE后文件太大的三個(gè)壓縮技巧

    Python打包EXE后文件太大的三個(gè)壓縮技巧

    Python 作為一門強(qiáng)大的編程語言,廣泛應(yīng)用于桌面應(yīng)用開發(fā),但許多開發(fā)者在使用 PyInstaller 等工具打包 Python 腳本為 EXE 文件時(shí),常常遇到一個(gè)頭疼問題:生成的安裝包體積過大,本文將介紹三個(gè)實(shí)用壓縮技巧,幫助你輕松將安裝包體積減半,需要的朋友可以參考下
    2025-12-12
  • 帶你了解python裝飾器

    帶你了解python裝飾器

    Python中的裝飾器是你進(jìn)入Python大門的一道坎,不管你跨不跨過去它都在那里。Python中的裝飾器的概念經(jīng)常會(huì)讓人搞得一頭霧水,所以今天就好好來分析一下python中的裝飾器
    2017-06-06
  • Python csv文件記錄流程代碼解析

    Python csv文件記錄流程代碼解析

    這篇文章主要介紹了Python csv文件記錄流程代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Django ORM查詢操作方式

    Django ORM查詢操作方式

    Django提供了一套非常方便的類似SqlAlchemy ORM的通過對象調(diào)用的方式操作數(shù)據(jù)庫表的ORM框架,,本文給大家詳細(xì)介紹Django ORM查詢操作方式,感興趣的朋友一起看看吧
    2023-10-10
  • Python os.path 模塊常見用法:路徑拼接、目錄操作與批量文件處理

    Python os.path 模塊常見用法:路徑拼接、目錄操作與批量文件處理

    os.path 模塊提供了跨平臺(tái)處理路徑的基礎(chǔ)功能,本文通過實(shí)例說明其核心用法,包括路徑拼接、目錄創(chuàng)建、文件批量復(fù)制與重命名等,感興趣的朋友一起看看吧
    2026-05-05
  • python把1變成01的步驟總結(jié)

    python把1變成01的步驟總結(jié)

    在本文里我們給學(xué)習(xí)python的朋友們整理了關(guān)于python把1變成01的步驟總結(jié)內(nèi)容,有需要的朋友們學(xué)習(xí)下。
    2019-02-02
  • 對Python random模塊打亂數(shù)組順序的實(shí)例講解

    對Python random模塊打亂數(shù)組順序的實(shí)例講解

    今天小編就為大家分享一篇對Python random模塊打亂數(shù)組順序的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python操作xlsx格式文件并讀取

    python操作xlsx格式文件并讀取

    python操作xlsx格式文件是比較常見的一個(gè)問題,本文給大家介紹xlrd庫讀取,pandas庫讀取的實(shí)例代碼,給大家講解的很詳細(xì),需要的朋友跟隨小編一起看看吧
    2021-06-06

最新評(píng)論

公主岭市| 民权县| 平顶山市| 三原县| 那曲县| 湄潭县| 浮山县| 乌兰县| 曲麻莱县| 锡林郭勒盟| 南陵县| 唐海县| 游戏| 宁海县| 娄烦县| 博爱县| 禄丰县| 高要市| 清新县| 新田县| 凯里市| 黎川县| 揭东县| 虞城县| 武强县| 临桂县| 阳城县| 阿克苏市| 长阳| 东乡| 富裕县| 浑源县| 龙州县| 泰州市| 罗定市| 二连浩特市| 卫辉市| 四平市| 双桥区| 东阳市| 邵阳县|