入門小遠學爬蟲(二)簡單GET型網頁爬蟲實戰——“前程無憂”爬蟲崗位資訊的爬取之(二)Python requests庫的簡單使用

語言: CN / TW / HK

轉:

入門小遠學爬蟲(二)簡單GET型網頁爬蟲實戰——“前程無憂”爬蟲崗位資訊的爬取之(二)Python requests庫的簡單使用

文章目錄

  • 前言
  • 一、如何在Pycharm中匯入requests庫?
  • 二、如何使用requests庫?
    • 1、先試試最簡單的GET法
    • 2、加入請求頭
  • 小結


前言

這是本系列第一個實戰專案的第二課,有關第一課“網頁分析”的內容請點選連結

話不多說,開始今天的奮鬥


提示:本系列文章均為原創,歡迎轉載,但請註明出處謝謝!

網頁分析之後就需要Python上場了,今天的主角是Python的requests庫。requests是Python實現的最簡單易用的HTTP庫,適合基礎簡易的爬蟲開發,最關鍵的是它適合0基礎學爬蟲的同學上手開發爬蟲。

一、如何在Pycharm中匯入requests庫?

開啟或在合適的位置新建專案,比如說博主選擇專案路徑是

D:CSDN用Python爬蟲系列

點選 “檔案”(File)->“設定”(Setting)
入門小遠學爬蟲(二)簡單GET型網頁爬蟲實戰——“前程無憂”爬蟲崗位資訊的爬取之(二)Python requests庫的簡單使用
點選“專案(Project):你的專案名稱”->“Python直譯器”(Project Interpreter)->"+",開啟搜尋對話方塊
入門小遠學爬蟲(二)簡單GET型網頁爬蟲實戰——“前程無憂”爬蟲崗位資訊的爬取之(二)Python requests庫的簡單使用
搜尋 “requests”->點選"安裝包"(Install Package)

有時因為包的版本太高,程式碼執行出錯,此時需要選中右下角的“指定版本”(Specify version),然後選擇想要的版本即可。此處由於PyCharm下的是最新版本,所以不用擔心這個問題。

入門小遠學爬蟲(二)簡單GET型網頁爬蟲實戰——“前程無憂”爬蟲崗位資訊的爬取之(二)Python requests庫的簡單使用
稍等片刻,顯示安裝成功。點選“確定”,關閉設定視窗。
入門小遠學爬蟲(二)簡單GET型網頁爬蟲實戰——“前程無憂”爬蟲崗位資訊的爬取之(二)Python requests庫的簡單使用

二、如何使用requests庫?

關於requests庫的基本使用

1、先試試最簡單的GET法

# -*- coding: utf-8 -*-
# @Time: 2020/11/29 14:21
# @Author: 胡志遠
# @Software: PyCharm

# 匯入requests包
import requests
# 網頁連結
url = "https://jobs.51job.com/pachongkaifa/p1/"
# 無請求頭寫法
res = requests.get(url)
# 也可以寫作res = requests.get(url=url),但一個引數的情況下沒有必要多此一舉
print(res)

結果發現報錯了
入門小遠學爬蟲(二)簡單GET型網頁爬蟲實戰——“前程無憂”爬蟲崗位資訊的爬取之(二)Python requests庫的簡單使用
原因很簡單,假設有兩間房,第一間房間什麼有價值的東西都沒有,第二間房有很多比較有價值的金銀財寶,現在要你獨守空房。顯然,如果這個時候有人想進來,你前者的戒備心肯定要小於後者。網頁也是一樣,網頁內有用的資料越多,他就越怕人家輕輕鬆鬆拿掉了他辛辛苦苦弄來的資料,所以他會有一套專門的演算法來抵制爬蟲,這個機制就叫反爬。

前面也說到,爬蟲就是模仿瀏覽器嘛,他之所以不給你資料,還不是因為你偽裝瀏覽器裝得不夠像!那解決辦法就是讓自己裝得更像一點不就行了?所以,需要

2、加入請求頭

請求頭就好像一個證明身份的“合格證”,告訴伺服器,“我是有‘合法經營手續’的正規瀏覽器,你們不能阻擋我。”

怎麼獲取請求頭呢,這裡又需要用到Chrome的開發者工具了,使用Chrome開啟網頁,調出開發者工具【怎麼調出請參考“前程無憂”實戰專案之(一),在此不贅述】,重新整理頁面(這個重新整理很關鍵)。點選Network,點選所需資料的來源,在右邊的屬性欄找到Request Headers。裡面有很多資訊,其中有很多很重要的內容(比如Cookie和User-Agent這種都是很重要、需要掌握的),但篇幅有限只能在之後的文章中陸續介紹。
入門小遠學爬蟲(二)簡單GET型網頁爬蟲實戰——“前程無憂”爬蟲崗位資訊的爬取之(二)Python requests庫的簡單使用
此處,有一個最好理解也是最笨的方法:把他一股腦全部寫進頭裡面,然後用這個頭去請求,這樣做的好處就是,等於100%模擬你的這個Chrome去訪問伺服器,你暫時不需要知道每一項代表了什麼意思,容易更快速地上手爬蟲;但是壞處就是稍微難一點的網頁就很難爬了,好在,這個“前程無憂”的網頁不難。那麼,修改一下程式碼

# -*- coding: utf-8 -*-
# @Time: 2020/11/29 14:21
# @Author: 胡志遠
# @Software: PyCharm

# 匯入requests包
import requests
# 網頁連結
url = "https://jobs.51job.com/pachongkaifa/p1/"
# 請求頭
headers = {
     
     
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept-Language": "zh-CN,zh;q=0.9",
    "Connection": "keep-alive",
    "Cookie": "guid=7e8a970a750a4e74ce237e74ba72856b; partner=blog_csdn_net",
    "Host": "jobs.51job.com",
    "Sec-Fetch-Dest": "document",
    "Sec-Fetch-Mode": "navigate",
    "Sec-Fetch-Site": "none",
    "Sec-Fetch-User": "?1",
    "Upgrade-Insecure-Requests": "1",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36"
}
# 有請求頭寫法
res = requests.get(url=url, headers=headers)
print(res)

OK,大功告成,東西拿到了,我們成功騙過了伺服器。松活彈抖閃電鞭第一式——“接”,完成!

執行結果
入門小遠學爬蟲(二)簡單GET型網頁爬蟲實戰——“前程無憂”爬蟲崗位資訊的爬取之(二)Python requests庫的簡單使用

初學的同學可能會問我這個200是個什麼,可以參考這個網站,總之這是個很複雜的玩意,requests物件儲存了伺服器返回給客戶端的各種各樣的資訊,比如有:
入門小遠學爬蟲(二)簡單GET型網頁爬蟲實戰——“前程無憂”爬蟲崗位資訊的爬取之(二)Python requests庫的簡單使用
對於初學者來說,與請求頭一樣,不必瞭解所有分別代表什麼,我們暫時只要獲取網頁原始碼就行了嘛。將res.text打印出來(print程式碼改為print(res.text)),你們看看是什麼,是不是很眼熟?再開啟開發者工具看看Elements(網頁原始碼),看看是不是很像?
入門小遠學爬蟲(二)簡單GET型網頁爬蟲實戰——“前程無憂”爬蟲崗位資訊的爬取之(二)Python requests庫的簡單使用
什麼?有亂碼?那是因為沒解碼,這裡的res.text的解碼型別來源是根據http頭部對響應的編碼作出推測,當然,這裡它顯然推錯了,運用了錯誤的解碼方式,當然解出來是亂碼。

開啟開發者工具,點選Console,在下方輸入document.charset,可知該網頁的編碼方式為GBK編碼,那麼我們只需要告訴Python讓它正確解碼就行了
入門小遠學爬蟲(二)簡單GET型網頁爬蟲實戰——“前程無憂”爬蟲崗位資訊的爬取之(二)Python requests庫的簡單使用

在print語句之前加一句解碼的語句:

res.encoding = "gbk"

現在好看多了,執行結果如圖
入門小遠學爬蟲(二)簡單GET型網頁爬蟲實戰——“前程無憂”爬蟲崗位資訊的爬取之(二)Python requests庫的簡單使用
至此,requests完成了它的使命,我們已經拿到了網頁內容,之後就要靠解析工具了,還記得上一張講的Xpath嗎,還沒登場呢,敬請期待。


小結

使用requests庫三部曲:
1、引入包(import)
2、傳送請求獲取資料
3、根據編碼解碼(可能不用)

如果覺得博主寫的還不錯的,歡迎點贊、評論、加關注,大家的訪問就是博主更新文章不竭的源動力!

轉:

入門小遠學爬蟲(二)簡單GET型網頁爬蟲實戰——“前程無憂”爬蟲崗位資訊的爬取之(二)Python requests庫的簡單使用


--Posted from Rpc

分享到: