<wbr id="juant"></wbr>
  • <wbr id="juant"></wbr>
    更多課程 選擇中心


    Python培訓

    400-111-8989

    python3使用requests模塊爬取頁面內容

    • 發布:Python培訓
    • 來源:Python練習題庫
    • 時間:2017-10-11 15:19

    1.安裝pip

    我的個人桌面系統用的linuxmint,系統默認沒有安裝pip,考慮到后面安裝requests模塊使用pip,所以我這里第一步先安裝pip。

    $ sudo apt install python-pip

    安裝成功,查看PIP版本:

    $ pip -V

    2.安裝requests模塊

    這里我是通過pip方式進行安裝:

    $ pip install requests

    安裝requests

    運行import requests,如果沒提示錯誤,那說明已經安裝成功了!

    檢驗是否安裝成功

    3.安裝beautifulsoup4

    Beautiful Soup 是一個可以從HTML或XML文件中提取數據的Python庫。它能夠通過你喜歡的轉換器實現慣用的文檔導航,查找、修改文檔的方式。Beautiful Soup會幫你節省數小時甚至數天的工作時間。

    $ sudo apt-get install python3-bs4

    注:這里我使用的是python3的安裝方式,如果你用的是python2,可以使用下面命令安裝。

    $ sudo pip install beautifulsoup4

    4.requests模塊淺析

    1)發送請求

    首先當然是要導入 Requests 模塊:

    >>> import requests

    然后,獲取目標抓取網頁。這里我以簡書為例:

    >>> r = requests.get('http://www.jianshu.com/p/b8ef5c005ba4')

    這里返回一個名為 r 的響應對象。我們可以從這個對象中獲取所有我們想要的信息。這里的get是http的響應方法,所以舉一反三你也可以將其替換為put、delete、post、head。

    2)傳遞URL參數

    有時我們想為 URL 的查詢字符串傳遞某種數據。如果你是手工構建 URL,那么數據會以鍵/值對的形式置于 URL 中,跟在一個問號的后面。例如, jianshu.com/get?key=val。 Requests 允許你使用 params 關鍵字參數,以一個字符串字典來提供這些參數。

    舉例來說,當我們google搜索“python爬蟲”關鍵詞時,newwindow(新窗口打開)、q及oq(搜索關鍵詞)等參數可以手工組成URL ,那么你可以使用如下代碼:

    >>> payload = {'newwindow': '1', 'q': 'python爬蟲', 'oq': 'python爬蟲'}

    >>> r = requests.get("https://www.google.com/search", params=payload)

    3)響應內容

    通過r.text或r.content來獲取頁面響應內容。

    >>> import requests

    >>> r = requests.get('https://github.com/timeline.json')

    >>> r.text

    Requests 會自動解碼來自服務器的內容。大多數 unicode 字符集都能被無縫地解碼。這里補充一點r.text和r.content二者的區別,簡單說:

    resp.text返回的是Unicode型的數據;

    resp.content返回的是bytes型也就是二進制的數據;

    所以如果你想取文本,可以通過r.text,如果想取圖片,文件,則可以通過r.content。

    4)獲取網頁編碼

    >>> r = requests.get('http://www.jianshu.com/')

    >>> r.encoding

    'utf-8'

    5)獲取響應狀態碼

    我們可以檢測響應狀態碼:

    >>> r = requests.get('http://www.jianshu.com/')

    >>> r.status_code

    200

    5.案例演示

    最近公司剛引入了一款OA 系統,這里我以其官方說明文檔頁面為例,并且只抓取頁面中文章標題和內容等有用信息。

    演示環境

    操作系統:linuxmint

    python版本:python 3.5.2

    使用模塊:requests、beautifulsoup4

    代碼如下:

    #!/usr/bin/env python

    # -*- coding: utf-8 -*-

    _author_ = 'GavinHsueh'

    import requests

    import bs4

    #要抓取的目標頁碼地址

    url = 'http://www.ranzhi.org/book/ranzhi/about-ranzhi-4.html'

    #抓取頁碼內容,返回響應對象

    response = requests.get(url)

    #查看響應狀態碼

    status_code = response.status_code

    #使用BeautifulSoup解析代碼,并鎖定頁碼指定標簽內容

    content = bs4.BeautifulSoup(response.content.decode("utf-8"), "lxml")

    element = content.find_all(id='book')

    print(status_code)

    print(element)

    程序運行返回爬去結果:

    抓取成功

    關于爬去結果亂碼問題

    其實起初我是直接用的系統默認自帶的python2操作的,但在抓取返回內容的編碼亂碼問題上折騰了老半天,google了多種解決方案都無效。在被python2“整瘋“之后,只好老老實實用python3了。對于python2的爬取頁面內容亂碼問題,歡迎各位前輩們分享經驗,以幫助我等后生少走彎路。

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:Python特色數據類型(列表)
    下一篇:教你如何十分鐘學會Python3

    2021年Python面試題及答案匯總詳解

    python數據分析,你需要這些工具

    Python培訓講解二叉樹的三種深度

    Python培訓:如何實現窮舉搜索?

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    天天日天天射天天干天天伊|奇米电影|奇米网_奇米首页|奇米首页 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>