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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

目錄

前言

requests的安裝

1. cmd中輸入安裝

2. PyCharm中運(yùn)行安裝

3. Anaconda虛擬環(huán)境中安裝

4. 檢查是否安裝成功

案例1. 抓取搜狗搜索內(nèi)容

案例2 利用百度翻譯網(wǎng)站制作一個(gè)自己的翻譯小程序

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

總結(jié)


前言

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

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


requests的安裝

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

1. cmd中輸入安裝

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

② 輸入pip install requests

如果安裝速度慢的話可以改用國內(nèi)鏡像源安裝:

2. PyCharm中運(yùn)行安裝

如果安裝速度慢的話可以改用國內(nèi)鏡像源安裝:

3. Anaconda虛擬環(huán)境中安裝

① 打開Anaconda 3 Prompt

② 創(chuàng)建一個(gè)虛擬環(huán)境(如果有則跳過這步)

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

?等待后出現(xiàn)下面的界面,輸入y,回車

等待后可以看到已經(jīng)創(chuàng)建成功

③ 激活虛擬環(huán)境

輸入conda activate 環(huán)境名,或者輸入activate 環(huán)境名

輸入pip install requests

如果安裝速度慢的話可以改用國內(nèi)鏡像源安裝:

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

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

?輸入y,回車

等待后出現(xiàn)done,安裝成功。

4. 檢查是否安裝成功

① 可以在py文件中import requests看是否報(bào)錯(cuò)

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

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


案例1. 抓取搜狗搜索內(nèi)容

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后的參數(shù),即headers進(jìn)行修飾 resp = requests.get(url, headers=ua) # 處理一個(gè)小小的反爬print(resp) print(resp.text) # 拿到頁面源代碼 resp.close()

其中,url可以自行修改,想獲取哪個(gè)搜索界面的源代碼,就從哪個(gè)頁面復(fù)制來網(wǎng)頁url;

ua,即User-Agent,需要從上一節(jié)提到的響應(yīng)頭中粘貼自己的ua。

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


案例2 利用百度翻譯網(wǎng)站制作一個(gè)自己的翻譯小程序

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

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

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

運(yùn)行示例:

可以看到已經(jīng)完美“搬運(yùn)”了百度翻譯的結(jié)果!對于我們初學(xué)者還是很有成就感的~?


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

import requests# url = "https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=&start=0&limit=20" # 參數(shù)太多太復(fù)雜,用f{}替換太繁瑣url = "https://movie.douban.com/j/chart/top_list" # 重新封裝參數(shù) 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,因?yàn)楸环磁懒?resp = requests.get(url=url, params=param, headers=headers)print(resp.request.url) # 顯示實(shí)際訪問的網(wǎng)頁,即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() # 關(guān)掉resp,否則可能出現(xiàn)請求口堵死的情況

這里我們用了一個(gè)巧妙的地方,因?yàn)榭吹皆镜膗rl太長太復(fù)雜太繁瑣,所以我們就另辟蹊徑,重新封裝了一組參數(shù),也就是把top_list后面的參數(shù)都封裝進(jìn)param里,便于我們后續(xù)修改。

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

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

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


總結(jié)

本節(jié)我們學(xué)會了requests模塊的安裝,成功編寫了三個(gè)簡單的爬蟲案例,認(rèn)識了兩種不同請求方式的requests用法,增添了學(xué)習(xí)興趣,增強(qiáng)了編程的自信心,希望大家可以和我一起共同進(jìn)步,一起努力~

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。