在網(wǎng)站上做網(wǎng)絡(luò)課堂軟件多少錢線上營銷推廣方案
文章目錄
- 一、爬取目標
- 二、環(huán)境準備
- 三、代理IP獲取
- 3.1 爬蟲和代理IP的關(guān)系
- 3.2 巨量IP介紹
- 3.3 超值企業(yè)極速池推薦
- 3.4 IP領(lǐng)取
- 3.5 代碼獲取IP
- 四、爬蟲代碼實戰(zhàn)
- 4.1分析網(wǎng)頁
- 4.2 尋找接口
- 4.3 參數(shù)構(gòu)建
- 4.4 完整代碼
一、爬取目標
本次目標網(wǎng)站:百度翻譯(https://fanyi.baidu.com/),輸入一個關(guān)鍵詞后返回翻譯結(jié)果:
二、環(huán)境準備
Python:3.10
編輯器:PyCharm
第三方模塊,自行安裝:
pip install requests # 網(wǎng)頁數(shù)據(jù)爬取
三、代理IP獲取
由于百度翻譯限制很嚴,為了能正常獲取數(shù)據(jù)這里必須使用到代理IP。
3.1 爬蟲和代理IP的關(guān)系
爬蟲和代理IP之間的關(guān)系是相互依存的。代理IP為爬蟲提供了繞過IP限制、隱藏真實IP、提高訪問速度等能力,使得爬蟲能夠更有效地進行數(shù)據(jù)抓取。然而,在使用時也需要注意合法性、穩(wěn)定性、成本以及隱私保護等問題。
3.2 巨量IP介紹
巨量IP提供免費HTTP代理IP和長效靜態(tài)IP、短效IP、動態(tài)IP代理、隧道代理等服務(wù),支持按時、按量、按時按量3種計費方式,根據(jù)業(yè)務(wù)場景需求,讓套餐的選擇變得更靈活:巨量IP官網(wǎng)
3.3 超值企業(yè)極速池推薦
博主經(jīng)常寫爬蟲代碼使用的是巨量IP家的企業(yè)極速池,每日500萬去重IP,單IP低至0.005元 (按量計費),并且充值加贈50%,不得不說真的很香:
經(jīng)常使用爬蟲的小伙伴推薦使用IP時效:1分鐘的套餐性價比超高。
3.4 IP領(lǐng)取
巨量IP還提供每日1000個免費IP供大家使用:代理IP免費領(lǐng)取
3.5 代碼獲取IP
1、點擊產(chǎn)品管理找到我們 購買或者領(lǐng)取 的套餐:
2、將自己電腦的IP添加為白名單能獲取代理IP,點擊授權(quán)信息:
3、依次點擊修改授權(quán)》快速添加》確定
4、添加完成后,點擊生成提取鏈接:
5、設(shè)置每次提取的數(shù)量,點擊生成鏈接,并復(fù)制鏈接:
6、將復(fù)制鏈接,復(fù)制到地址欄就可以看到我們獲取到的代理IP了:
7、代理獲取IP(注意:下面url需要換成你的鏈接):
import requests
import time
import randomdef get_ip():url = "這里放你自己的API鏈接"while 1:try:r = requests.get(url, timeout=10)except:continueip = r.text.strip()if '請求過于頻繁' in ip:print('IP請求頻繁')time.sleep(1)continuebreakproxies = {'https': '%s' % ip}return proxiesif __name__ == '__main__':proxies = get_ip()print(proxies)
獲取成功:
四、爬蟲代碼實戰(zhàn)
4.1分析網(wǎng)頁
在翻譯欄左側(cè)輸入內(nèi)容,并不需要刷新網(wǎng)頁,翻譯結(jié)果可實時返回,說明該翻譯網(wǎng)站為進行Ajax加載的網(wǎng)站:
Ajax(Asynchronous JavaScript and XML)是一種在無需重新加載整個網(wǎng)頁的情況下,能夠更新部分網(wǎng)頁內(nèi)容的技術(shù)。它通過在后臺與服務(wù)器交換數(shù)據(jù),并允許網(wǎng)頁異步更新,從而提升了用戶體驗。
4.2 尋找接口
1、鼠標右擊》檢查》選擇XHR,輸入翻譯內(nèi)容,找到對應(yīng)的翻譯接口:
2、找到接口網(wǎng)址(https://fanyi.baidu.com/sug)和請求方式(Post請求):
3、可以看到攜帶的參數(shù)就是我們輸入的內(nèi)容:
4.3 參數(shù)構(gòu)建
下面代碼構(gòu)建一個攜帶參數(shù)的post請求:
# 1. 百度接口鏈接
post_url = 'https://fanyi.baidu.com/sug'
# 2. 創(chuàng)建post請求攜帶的參數(shù),將手動輸入需要翻譯的單詞傳進去
data = {
'kw': kw
}
# 3. 攜帶請求頭
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.51'}
# 使用post 請求(和get類似)
data_json = requests.post(url=post_url, data=data, headers=headers).json()
4.4 完整代碼
注意下面代碼需要修改 get_ip()
函數(shù)中 url
添加你自己的代理IP接口url(防止被識別到為爬蟲):
import requests
import timedef get_ip():url = "這里換成自己的代理IP接口url"while 1:try:r = requests.get(url, timeout=10) #except:continueip = r.text.strip()if '請求過于頻繁' in ip:print('IP請求頻繁')time.sleep(1)continuebreakproxies = {'https': '%s' % ip}return proxiesdef get_data(kw):# 1. 百度接口鏈接post_url = 'https://fanyi.baidu.com/sug'# 2. 創(chuàng)建post請求攜帶的參數(shù),將手動輸入需要翻譯的單詞傳進去data = {'kw': kw}# 3. 攜帶請求頭headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.51'}# 4. 獲取代理IPproxies = get_ip()# 使用post 請求data_json = requests.post(url=post_url, data=data, headers=headers,proxies=proxies).json()# print(data_json)for key in data_json['data'][0]:print(key, data_json['data'][0][key])def main():while True:# 手動輸入需要翻譯的單詞kw = input("請輸入需要翻譯的單詞:")get_data(kw)if __name__ == '__main__':main()
可以看到中文翻譯為英文,英文翻譯為中文都可以輕松實現(xiàn):