日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

04. requests模块入门与三个案例(搜狗搜索/百度翻译/豆瓣电影)

發布時間:2024/1/1 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 04. requests模块入门与三个案例(搜狗搜索/百度翻译/豆瓣电影) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

前言

requests的安裝

1. cmd中輸入安裝

2. PyCharm中運行安裝

3. Anaconda虛擬環境中安裝

4. 檢查是否安裝成功

案例1. 抓取搜狗搜索內容

案例2 利用百度翻譯網站制作一個自己的翻譯小程序

案例3 豆瓣電影高分排行榜讀取

總結


前言

在前面小節中,我們使用urllib來抓取頁面源代碼,這是python內置的一個模塊,但它并不是我們常用的爬蟲工具。

常用的抓取頁面的模塊是第三方模塊——requests。這個模塊的優勢就是比urllib還要簡單,并且處理各種請求都很方便。


requests的安裝

既然是第三方模塊,那就需要我們對該模塊進行安裝,安裝方法:

1. cmd中輸入安裝

① 按下win+R,輸入cmd,按下回車

② 輸入pip install requests

如果安裝速度慢的話可以改用國內鏡像源安裝:

2. PyCharm中運行安裝

如果安裝速度慢的話可以改用國內鏡像源安裝:

3. Anaconda虛擬環境中安裝

① 打開Anaconda 3 Prompt

② 創建一個虛擬環境(如果有則跳過這步)

輸入conda create -n 環境名 python=X.X,按下回車

?等待后出現下面的界面,輸入y,回車

等待后可以看到已經創建成功

③ 激活虛擬環境

輸入conda activate 環境名,或者輸入activate 環境名

輸入pip install requests

如果安裝速度慢的話可以改用國內鏡像源安裝:

pip install requests -i?https://pypi.tuna.tsinghua.edu.cn/simple requests

還可以用conda安裝,輸入conda install requests

?輸入y,回車

等待后出現done,安裝成功。

4. 檢查是否安裝成功

① 可以在py文件中import requests看是否報錯

② 可以在3.中提到的幾種方法里輸入pip list回車查看已安裝庫函數列表(以Anaconda為例)

可以看到requests已經在我們的已安裝列表中了,安裝完成。?


案例1. 抓取搜狗搜索內容

import requestsurl = 'https://www.so.com/s?ie=utf-8&src=dlm_b_cube&shb=1&hsid=0d7b9150b571cec3&ls=n144c1cd899&ssid=&q=周杰倫'ua = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.81 Safari/537.36 Edg/104.0.1293.54" }# resp = requests.get(url) # 這樣可能造成攔截,被識別出爬蟲程序,需要用User-Agent后的參數,即headers進行修飾 resp = requests.get(url, headers=ua) # 處理一個小小的反爬print(resp) print(resp.text) # 拿到頁面源代碼 resp.close()

其中,url可以自行修改,想獲取哪個搜索界面的源代碼,就從哪個頁面復制來網頁url;

ua,即User-Agent,需要從上一節提到的響應頭中粘貼自己的ua。

第9/10行代碼處理了一個小小的反爬,可以將我們的py程序發出請求的ua(即用戶代理)“偽裝”成正常的瀏覽器,而非編程軟件。


案例2 利用百度翻譯網站制作一個自己的翻譯小程序

import requestsurl = "https://fanyi.baidu.com/sug"s = input("請輸入你要翻譯的英文單詞:") dat = {"kw": s }# 發送post請求,發送的數據必須放在字典中,通過data參數進行傳遞 resp = requests.post(url, data=dat) # print(resp.text) # 這樣中文會出現代碼,不利于提取數據 resp_json = resp.json() # 將服務器返回的內容直接處理成json() => 也即python中的字典dict print(resp_json['data'][0]['v']) # 拿到返回字典的內容 resp.close()

此代碼不用更改,可以直接使用。

注意?https://fanyi.baidu.com/sug?這個url,通過F12可以得知,它是通過post方式提交的,所以我們也要模擬post請求,使用requests.post()這個api,返回到resp中,再將返回的數據直接處理成json數據(相當于Python中的字典)。直接打印這個json,信息比較多比較復雜,觀感差。我們選擇性打印對應需要的內容就可以顯示我們想要的翻譯結果了,觀看較好~

運行示例:

可以看到已經完美“搬運”了百度翻譯的結果!對于我們初學者還是很有成就感的~?


案例3 豆瓣電影高分排行榜讀取

import requests# url = "https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=&start=0&limit=20" # 參數太多太復雜,用f{}替換太繁瑣url = "https://movie.douban.com/j/chart/top_list" # 重新封裝參數 param = {"type": "24","interval_id": "100:90","action": "","start": 0,"limit": 20, }headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.81 Safari/537.36 Edg/104.0.1293.54" } # resp = requests.get(url=url, params=param) #還需重新裝填headers,因為被反爬了 resp = requests.get(url=url, params=param, headers=headers)print(resp.request.url) # 顯示實際訪問的網頁,即url+?+params # print(resp.text) # 什么都不顯示說明被反爬了,首先要檢查UA # print(resp.request.headers) # 檢查headers是否有問題 #{'User-Agent': 'python-requests/2.27.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} print(resp.json())# start的作用:從top幾開始 # limit的作用:一次查詢幾名resp.close() # 關掉resp,否則可能出現請求口堵死的情況

這里我們用了一個巧妙的地方,因為看到原本的url太長太復雜太繁瑣,所以我們就另辟蹊徑,重新封裝了一組參數,也就是把top_list后面的參數都封裝進param里,便于我們后續修改。

headers也就是我們之前提到的ua,可以自行修改參數名,這個無所謂的~

這里我們用的是get方式請求,和案例2不同。其實也很好理解,我們之前提到過,post是上傳修改,get是獲取下載,所以百度翻譯需要post我們想要翻譯的詞語,而豆瓣電影網需要get我們想要獲取的信息。

在get請求中,我們的param封裝的內容會自動添加到url后面,自動拼接成我們最開始看到的那個冗長的代碼!其實我們start的作用就是從第幾名開始。limit的作用就是一次查詢幾名,知道這兩個條件以后其實可以寫一個循環,循環n次從而執行出豆瓣電影前20n的排名詳情。


總結

本節我們學會了requests模塊的安裝,成功編寫了三個簡單的爬蟲案例,認識了兩種不同請求方式的requests用法,增添了學習興趣,增強了編程的自信心,希望大家可以和我一起共同進步,一起努力~

總結

以上是生活随笔為你收集整理的04. requests模块入门与三个案例(搜狗搜索/百度翻译/豆瓣电影)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。