国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python簡單post信息

xuxueli / 810人閱讀

摘要:搞清楚了的信息后,我們就可以寫代碼來自動提交信息了。里面存的就是要的信息,其中賬號和密碼我用代替了。若不是一種數據類型或者由數據類型構成的元組,將引發一個異常。

從自己別的博客搬過來的,很久之前的文章,正好放在專欄Python基礎知識里~不知道對別人有沒有用,希望不會辣眼睛哈哈~

最近學了點關于python的網絡爬蟲的知識,簡單記錄一下,這里主要用到了requests庫和BeautifulSoup庫

Requests is an elegant and simple HTTP library for Python, built for human beings.

Beautiful Soup?is a Python library for pulling data out of HTML and XML files. It works with your favorite parser to provide idiomatic ways of navigating, searching, and modifying the parse tree. It commonly saves programmers hours or days of work.

以上是兩個庫的介紹,鏈接是文檔信息

1、示例頁面

這里我利用東北大學的圖書館的登陸頁面來實現我們的爬蟲功能(ps:沒錯,博主是東北大學的學生..所以我有賬號密碼),沒有賬號密碼也沒有關系,原理都是差不多的,之所以找這個頁面,是因為這個頁面沒有驗證碼,能夠簡單一些,而且像學校的這種頁面一般比較簡單,方便操作

2、簡單分析

首先我用的賬戶和密碼登陸進了東北大學圖書館,我使用的是chrome瀏覽器,打開開發者模式,我們來看看我們提交了哪些信息。

登陸進去后,按下F12打開開發者模式,在Network選項卡下面,我們找到這個文件,他的request方法是post,應該就是我們要找的文件了,拉到最下面看到Form Data,紅色框出就是我們登陸時提交的信息了,一共五個部分,畫紅線的地方是賬號和密碼。搞清楚了post的信息后,我們就可以寫代碼來自動提交信息了。

登陸部分搞清楚了,接下就要分析要抓取的信息了,現在我要抓取我的

外借

借閱歷史列表

預約請求

要抓取這三個數據,如上圖所示,我當前外借1本書,借閱過65本書,預約請求為0,現在的目的是將這些數據抓取出來,我們按下F12來查看網頁的源代碼,分析我們應該抓取哪一部分。

如上圖所示,一步步找到了數據所在的標簽,我發現數據都在id=history這個標簽下,所以可以先找到這個標簽,然后再找tr標簽,然后就能找到td標簽里的數據了。

3、實現的功能

自動登陸

抓取頁面上的一些信息,并在控制臺輸出

4、代碼部分 4.1、post數據的部分

首先貼上這部分的代碼

def getHTMLText(url):
    try:
        kv = {"user-agent": "Mozilla/5.0"}
        mydata = {"func":"login-session", "login_source":"bor-info", "bor_id": "***", "bor_verification": "***","bor_library":"NEU50"}
        re = requests.post(url, data=mydata, headers=kv)
        re.raise_for_status()
        re.encoding = re.apparent_encoding
        return re.text
    except:
        print("異常")
        return""

代碼如上,我們來分析一下

kv是為了模擬瀏覽器而定義的字典,因為有些網站如果識別出是爬蟲的話,會拒絕訪問,所以這里可以修改headers的信息來模擬瀏覽器登陸。

mydata里面存的就是要post的信息,其中賬號和密碼我用*代替了。

requests.post()就是向指定的url 提交數據,關于requests在網上都能搜的到,就不贅述了。

re.raise_for_status()這個的含義是如果訪問失敗的話,就會丟出異常。

re.encoding = re.apparent_encoding修改編碼,保證中文能被正確的解析。

這里采用try except的結構,為了程序的健壯性考慮,讓程序在錯誤的時候不至于崩潰。

最后返回我們新的頁面的text。

4.2、抓取數據部分

首先貼上代碼

def fillBookList(booklist, html):
    soup = BeautifulSoup(html,"html.parser")
    for tr in soup.find(id="history").descendants:
        if isinstance(tr, bs4.element.Tag):
            temp = tr.find_all("td")
            if len(temp)>0:
                booklist.append(temp[1].string.strip())
                booklist.append(temp[3].string.strip())
                booklist.append(temp[5].string.strip())
                break

參數分別是我們要填充的列表和目標頁面

創建一個BeautifulSoup的對象

在整個頁面中查找id=history的標簽,然后遍歷其所有子孫標簽

在遍歷的過程中,標簽的子標簽可能是字符串類型,我們要過濾掉這些,所以用了isinstance(tr, bs4.element.Tag)

isinstance 的用法:
語法:
isinstance(object, classinfo)
其中,object 是變量,classinfo 是類型(tuple,dict,int,float,list,bool等) 和 class類若參數 object 是 classinfo 類的實例,或者 object 是 classinfo 類的子類的一個實例, 返回 True。 若 object 不是一個給定類型的的對象, 則返回結果總是False。若 classinfo 不是一種數據類型或者由數據類型構成的元組,將引發一個 TypeError 異常。

在標簽中尋找所有td標簽,觀察源代碼發現,第一個td標簽列表就是我們要的,所以一旦找到我們要的信息以后,就停止查找,并就信息存在booklist里面

4.3、打印信息

貼上代碼

def printUnivList(booklist):
    print("{:^10}	{:^6}	{:^10}".format("外借","借閱歷史列表","預約請求"))
    print("{:^10}	{:^6}	{:^10}".format(booklist[0],booklist[1],booklist[2])

這部分很簡單就不說了

4.4、主函數

貼上代碼

def main():
    html = getHTMLText("http://202.118.8.7:8991/F/-?func=bor-info")
    booklist = []
    fillBookList(booklist, html)
    printUnivList(booklist)
5、測試


成功的在控制臺打印出了我們要的信息!

6、完整的代碼
import requests
from bs4 import  BeautifulSoup
import  bs4
def getHTMLText(url):
    try:
        kv = {"user-agent": "Mozilla/5.0"}
        mydata = {"func":"login-session", "login_source":"bor-info", "bor_id": "***", "bor_verification": "***","bor_library":"NEU50"}
        re = requests.post(url, data=mydata, headers=kv)
        re.raise_for_status()
        re.encoding = re.apparent_encoding
        return re.text
    except:
        print("異常")
        return""
def fillBookList(booklist, html):
    soup = BeautifulSoup(html,"html.parser")
    for tr in soup.find(id="history").descendants:
        if isinstance(tr, bs4.element.Tag):
            temp = tr.find_all("td")
            if len(temp)>0:
                booklist.append(temp[1].string.strip())
                booklist.append(temp[3].string.strip())
                booklist.append(temp[5].string.strip())
                break
def printUnivList(booklist):
    print("{:^10}	{:^6}	{:^10}".format("外借","借閱歷史列表","預約請求"))
    print("{:^10}	{:^6}	{:^10}".format(booklist[0],booklist[1],booklist[2]))
def main():
    html = getHTMLText("http://202.118.8.7:8991/F/-?func=bor-info")
    booklist = []
    fillBookList(booklist, html)
    printUnivList(booklist)
main()

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/101536.html

相關文章

  • 使用Python實現一個簡單的圖片上傳存儲服務

    摘要:地址使用實現的一個簡單的圖片上傳服務設計初衷對于圖片的存儲有很多選擇一般采用云服務如七牛又拍等但是國內的服務像七牛自定義域名竟然需要域名備案當初就是因為備案麻煩才選擇國外的而且浪費了我十塊錢而我又想像七牛一樣可以直接在本地就可以上傳圖片找 GitHub地址: https://github.com/honmaple/maple-file 使用flask實現的一個簡單的圖片上傳服務 設計...

    yzd 評論0 收藏0
  • python抓一點數據回來

    摘要:背景分析至此,下一步要解決的問題就是完成一次獨立的請求,并解析得到目標數據。上方地址欄的網址是請求的入口,中間圓角方框中的格式天津則是請求參數。當我看到中的天津時,非常開心,因為我找到了請求的入口。 概要 背景描述 網站和http請求分析 IP受限的問題 1. 背景描述 大為軟件公司于2001年9月在保定國家高新技術產業開發區注冊,公司致力于中國、日本知識產權軟件的研究開發,立志成...

    snifes 評論0 收藏0
  • Python 從零開始爬蟲(零)——爬蟲思路&requests模塊使用

    摘要:定制篩選器,對內容進行篩選重點。審查元素這是瀏覽器自帶的工具,提供抓包和檢查網頁源碼的功能,供使用者分析網頁。超時設置,如果服務器在指定秒數內沒有應答,拋出異常,用于避免無響應連接,整形或浮點數。返回連接狀態,正常。 前言 python 3.6 !! 本爬蟲系列是面對有Python語法基礎的讀者寫的,如果你沒學過python,emmmm.....也沒關系,你或許能從每篇文章中學到一些...

    YanceyOfficial 評論0 收藏0
  • Python3網絡爬蟲實戰---24、requests:基本使用

    摘要:上一篇文章網絡爬蟲實戰使用分析協議下一篇文章在前面一節我們了解了的基本用法,但是其中確實有不方便的地方。發送之后,得到的自然就是,在上面的實例中我們使用了和獲取了內容,不過還有很多屬性和方法可以獲取其他的信息,比如狀態碼等信息。 上一篇文章:Python3網絡爬蟲實戰---23、使用Urllib:分析Robots協議下一篇文章: 在前面一節我們了解了 Urllib 的基本用法,但是其中...

    lentrue 評論0 收藏0
  • Django 博客開發教程 12 - 評論

    摘要:創建了數據庫模型就要遷移數據庫,遷移數據庫的命令也在前面講過。如果表單對應有一個數據庫模型例如這里的評論表單對應著評論模型,那么使用類會簡單很多,這是為我們提供的方便。表明這個表單對應的數據庫模型是類。 創建評論應用 相對來說,評論其實是另外一個比較獨立的功能。Django 提倡,如果功能相對比較獨立的話,最好是創建一個應用,把相應的功能代碼寫到這個應用里。我們的第一個應用叫 blog...

    wangbinke 評論0 收藏0

發表評論

0條評論

xuxueli

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<