Python爬蟲入門基礎——Requests獲取知乎發現頁信息

Python爬蟲入門基礎——Requests獲取知乎發現頁信息

Requests基本用法

requests是一個很強大的庫,可用於Cookies、登錄驗證、代理設置等操作。
requests請求網頁的方式是get(),代碼如下:

import requests

r = requests.get('https://www.baidu.com/')
print(type(r))
print(r.status_code)
print(type(r.text))
print(r.text)
print(r.cookies)

結果如圖1:
圖1
有結果可以得出結論:get方法得到一個Response對象,然後分別輸出了Response的類型、狀態碼、響應體的類型、內容以及Cookies。
除了get方法,其他的方法也是很方便實現的:

r = requests.post('http://httpbin.org/post')
r = requests.put('http://httpbin.org/put')
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/get')
r = requests.options('http://httpbin.org/get')

抓取網頁示例

import requests
import re
 
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
}
r = requests.get("https://www.zhihu.com/explore", headers=headers)
#正則表達式(需要根據當前時期網站內容而改變,不返回數據,說明正則表達式沒有生效)
pattern = re.compile('ExploreSpecialCard-title.*?noreferrer noopener.*?>(.*?)</a>', re.S)
titles = re.findall(pattern, r.text)
print(titles)

該段代碼是我們通過構造headers信息,其中包含User-Agent字段信息,也就是瀏覽器標識信息。如果不加這個,知乎會禁止抓取。

通過簡單的正則表達式獲取返回信息中的部分我們所需要的數據。(不懂的可以去菜鳥教程上看看:正則表達式 - 教程

網站建設在網站生命週期裏都會進行的,版面設計更新之後相應的正則表達式也會失效,要根據當前時間段,我們所獲取的數據,來進行篩選,正則表達式才能發揮作用。

返回結果如圖2:
圖2
圖3是當時的網頁:
圖3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章