欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用python獲取想要搜索的數(shù)據(jù)

 更新時(shí)間:2023年05月07日 14:07:33   作者:朦朧的雨夢(mèng)  
這篇文章主要介紹了利用Python爬蟲采集想要搜索的信息(利用某du的接口實(shí)現(xiàn))并且處理掉它的反爬手段,文中示例代碼很詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴快來一起學(xué)習(xí)吧

前言

大家在日常生活中經(jīng)常需要查找不同的事物的相關(guān)信息,今天我們利用python來實(shí)現(xiàn)這一個(gè)小功能,同時(shí)呢,也是大家對(duì)基礎(chǔ)知識(shí)的一個(gè)綜合實(shí)踐,相信有不少小伙伴已經(jīng)準(zhǔn)備躍躍欲試了,話不多說,開干!

本次爬蟲思路

  • 獲取url
  • 通過請(qǐng)求拿到響應(yīng)
  • 處理反爬
  • 修改傳遞參數(shù)
  • 完善程序

urllib庫

1.urllib庫的介紹

urllib庫是Python的標(biāo)準(zhǔn)庫,提供了一系列用于操作URL的功能,其大部分功能與requests庫類似,也有一些特別的用法。
urllib庫是Python標(biāo)準(zhǔn)庫提供的一個(gè)用戶操作URL的模塊,Python3把原來Python 2的urilib庫和Urllib 2庫合并成了一個(gè)Urllib庫,現(xiàn)在講解的就是Python3中的Urllib庫。

urllib.request——打開和讀取URL;

urllib.error——包含Urllib.request各種錯(cuò)誤的模塊;

urlib.parse——解析URL;

urllib.robotparse——解析網(wǎng)站robots.txt文件。

2.urllib庫的使用模板

import urllib.request     
url ='xxxxxxxxxxxx'   
#發(fā)送請(qǐng)求                
 request= urllib.request.Request(url,data,header)      
 #得到響應(yīng)
 response=urllib.request.urlopen(request)
 #解碼
 content = response.read().decode() 
 #查看數(shù)據(jù)
 print(content)    

3.使用urllib庫獲取數(shù)據(jù)

1. 獲取URL:首先使用Chrome瀏覽器打開某度網(wǎng)頁,隨便輸入一個(gè):xxx,然后打開開發(fā)者工具(右鍵檢查),切換到網(wǎng)絡(luò)界面,清空記錄,重新刷新頁面,可以看到:

如此這個(gè)URL就是我們需要獲取的URL:https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E6%B3%95%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95&fenlei=256&rsv_pq=0x8dc81b9f001c02d3&rsv_t=1c35crTFwJXLFoeU8nF33RDMyj9nX%2FofGDNqUmHapdGRlUDmKmo7610WDRno****&rqlang=en&rsv_dl=tb&rsv_sug3=7&rsv_enter=0&rsv_btype=i&inputT=2267&rsv_sug4=2878
分析:加粗的這一堆:就是法解決方法這幾個(gè)關(guān)鍵字;

2.通過請(qǐng)求拿到響應(yīng):直接利用模板模擬瀏覽器發(fā)起請(qǐng)求:

突然發(fā)現(xiàn)我們沒有拿到想要的數(shù)據(jù)。難道是我們程序?qū)戝e(cuò)了嗎?

3. 處理反爬:莫急,俗話說人靠衣服馬靠鞍,服務(wù)器就像大美女,你要打扮的帥帥的,才能獲得美女的芳心,當(dāng)然,這種方法是對(duì)于我們?nèi)藖碚f的,你可別馬上就給電腦噴香水啊,針對(duì)程序來說,我們就需要偽裝,假裝我是一個(gè)瀏覽器,那么,如何偽裝呢?我們就需要攜帶一些參數(shù),先試試這個(gè):
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(主要是我們電腦瀏覽器的名稱,版本信息),再試一次:

成功“騙”過了服務(wù)器,這樣就拿到了數(shù)據(jù)(高興??),別著急,我們?cè)偎伎家幌拢懿荒芡ㄟ^修改一些參數(shù),就讓我們想找哪些數(shù)據(jù)就拿哪些數(shù)據(jù),好,接下來我們就分析它的參數(shù):

  • 修改傳遞參數(shù)

wd:xx,它是這樣傳遞我們輸入的文字的,那么我們創(chuàng)造一個(gè)字典類型的鍵值對(duì),發(fā)送請(qǐng)求時(shí),再將這個(gè)參數(shù)拼接上去,這樣不就實(shí)現(xiàn)了我們的需求嘛(特別注意編解碼的問題)

哈哈,這里百度第二個(gè)安全驗(yàn)證出來了,根本原因是我們攜帶的一些參數(shù)有問題,因?yàn)檫€有一些參數(shù)在變,但是對(duì)于我們?nèi)腴T的童鞋處理起來不太友好,所以常用三種方法:
1.將wd后面的參數(shù)直接去掉;(成功率不高)
2.去掉HTTPS后面的是s,使用http協(xié)議;(成功率不高)
3.使用cookie;(比較穩(wěn)定)

我選擇使用第三種:

這樣就利用urllib庫實(shí)現(xiàn)了這個(gè)小功能。別著急,更簡(jiǎn)單的方法還在后面呢!????

4.urllib庫一些個(gè)人總結(jié)

1. urllib庫在處理一些網(wǎng)址的時(shí)候比requests庫更加快捷;
2. urllib庫涉及編解碼的問題,必須手動(dòng)添加;
3. 使用起來代碼行數(shù)多,比較笨重。
是不是感覺全是缺點(diǎn),正因如此,我們的requests庫應(yīng)運(yùn)而生,簡(jiǎn)單快捷方便,是對(duì)它最清晰的寫照,更加的人性化,接下來正式介紹這一大殺器,同時(shí)也希望大家盡量使用 requests庫來寫爬蟲(真的很好很好很好用!??)。

requests庫

5.requests庫的介紹

requests庫常用有這些功能:
1、Keep-Alive & 連接池
2、國(guó)際化域名和 URL
3、帶持久 Cookie 的會(huì)話
4、自動(dòng)內(nèi)容解碼
5、優(yōu)雅的 key/value Cookie
6、Unicode 響應(yīng)體
7、HTTP(S) 代理支持

6.requests庫的使用模板

import requests   
url ='xxxxxxxxxxxx' 
#發(fā)送請(qǐng)求                              
response = request.get(url, params,headers)  (get請(qǐng)求或者post請(qǐng)求)  
#根據(jù)響應(yīng)的格式解碼,非常智能
response.encoding=response.appareent_encoding

7.使用requests庫獲取數(shù)據(jù)

布置爬蟲的步驟在urllib庫使用的時(shí)候已經(jīng)非常詳細(xì)的解釋了,在此不在贅述,步驟相同,大家可以嘗試用模板自己寫一下(我個(gè)人的代碼放在最后了)。如果有哪里不懂得,可以在評(píng)論區(qū)留言,博主會(huì)盡全力解答。

8.requests庫一些個(gè)人總結(jié)

1. requests庫步驟簡(jiǎn)單;
2. 各種操作方法人性化,功能更加強(qiáng)大;
3. requests 庫擁有完全自動(dòng)化 Keep-alive 和 HTTP 連接池的功能,主要是突出Python的優(yōu)雅二字。

9.個(gè)人建議(附代碼)

1.部署爬蟲時(shí)要先思考好大步驟,最好能把步驟寫下來,然后一步一步逐步去寫代碼;
2.再仔細(xì)去瀏覽網(wǎng)頁,確然好你爬的信息接口是哪個(gè),是什么類型的請(qǐng)求,參數(shù)是什么,是存在網(wǎng)頁本身還是二次加載進(jìn)來的等等,一定要細(xì)心認(rèn)真;
3.處理反爬時(shí)一般攜帶的參數(shù)就是:User-Agent,Cookie,Accept,Host,這幾個(gè),如果還是拿不到數(shù)據(jù),那就是進(jìn)階了,暫時(shí)先不用管;
4.多觀察幾次請(qǐng)求,找到規(guī)律,實(shí)現(xiàn)規(guī)模式爬取(這也是爬蟲的初心)
5.優(yōu)化自己的程序,提高效率的同時(shí)又要避免被檢測(cè)出來,多思考就會(huì)有靈感。
request庫代碼:

import requests

data = input('輸入你想要查找的數(shù)據(jù):').split()

url ='http://www.baidu.com/s'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36',
    'Cookie': 'BIDUPSID=CDE3B4BEE7AE0D336C4D0734E42BCF8B; PSTM=1664331801; BAIDUID=CDE3B4BEE7AE0D33996D27FED1DDB4DB:FG=1; BD_UPN=12314753; BDUSS=JNdXVzTXMyWmFKM0x1VWJ5eG9GUjg4UmVCRFQxY1dtejBPVDFBfjc0VHhYRnRqRVFBQUFBJCQAAAAAAAAAAAEAAACse3WjanNuZGJpZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHPM2PxzzNjTT; BDUSS_BFESS=JNdXVzTXMyWmFKM0x1VWJ5eG9GUjg4UmVCRFQxY1dtejBPVDFBfjc0VHhYRnRqRVFBQUFBJCQAAAAAAAAAAAEAAACse3WjanNuZGJpZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHPM2PxzzNjTT; newlogin=1; ZFY=utLrULRdQjGdhXHuTriamg7jZ2PZMLmnKmUCBUiVrTw:C; BAIDUID_BFESS=CDE3B4BEE7AE0D33996D27FED1DDB4DB:FG=1; BA_HECTOR=ag04ah242k2l2h0la0010ofe1ho8t901f; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; COOKIE_SESSION=765400_1_9_9_5_15_1_0_9_7_0_0_1292084_0_0_0_1668919087_1669684425_1669684425%7C9%234656831_6_1669684425%7C3; B64_BOT=1; BDRCVFR[7FEYkXni5q3]=mk3SLVN4HKm; BD_HOME=1; H_PS_PSSID=26350; BD_CK_SAM=1; PSINO=3; delPer=1; H_PS_645EC=3d48biiwjEvDlNFtMaUHuepsRu67OxRgPoEiOrMKvfRketUwB4GowDbv4KmDa%2BaTHUgCCoc; baikeVisitId=e1f583c7-eb15-4940-a709-054666f30f48; BDSVRTM=443'
}

data = {
    'wd': data
}
response = requests.get(url=url, params=data, headers=headers)

response.encoding = response.apparent_encoding

print(response.text)

以上就是利用python獲取想要搜索的數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于python獲取數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • anconda的pip下載包出現(xiàn)的問題解決

    anconda的pip下載包出現(xiàn)的問題解決

    本文主要介紹了anconda的pip下載包出現(xiàn)的問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Django使用channels + websocket打造在線聊天室

    Django使用channels + websocket打造在線聊天室

    本文將教你如何使用channels + websocket打造個(gè)在線聊天室。一共只有四步,你可以輕松上手并學(xué)會(huì)。項(xiàng)目中大部分代碼是基于channels的官方文檔的,加入了些自己的理解,以便新手學(xué)習(xí)使用。
    2021-05-05
  • python dir函數(shù)快速掌握用法技巧

    python dir函數(shù)快速掌握用法技巧

    在本篇文章里小編給大家整理的是一篇關(guān)于python dir函數(shù)快速掌握用法技巧,有興趣的朋友們可以學(xué)習(xí)參考下。
    2020-12-12
  • python 實(shí)現(xiàn)插入排序算法

    python 實(shí)現(xiàn)插入排序算法

    python 插入排序算法,需要的朋友可以參考下
    2012-06-06
  • Python+OpenCV實(shí)現(xiàn)圖像的全景拼接

    Python+OpenCV實(shí)現(xiàn)圖像的全景拼接

    這篇文章主要為大家詳細(xì)介紹了Python+OpenCV實(shí)現(xiàn)圖像的全景拼接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 淺談Python程序的錯(cuò)誤:變量未定義

    淺談Python程序的錯(cuò)誤:變量未定義

    這篇文章主要介紹了淺談Python程序的錯(cuò)誤:變量未定義,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python如何自動(dòng)獲取目標(biāo)網(wǎng)站最新通知

    Python如何自動(dòng)獲取目標(biāo)網(wǎng)站最新通知

    這篇文章主要介紹了Python如何自動(dòng)獲取目標(biāo)網(wǎng)站最新通知,本文給大家分享實(shí)現(xiàn)思路及示例代碼,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • selenium?drag_and_drop不生效的解決辦法

    selenium?drag_and_drop不生效的解決辦法

    本文主要介紹了selenium?drag_and_drop不生效的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 詳解Numpy擴(kuò)充矩陣維度(np.expand_dims, np.newaxis)和刪除維度(np.squeeze)的方法

    詳解Numpy擴(kuò)充矩陣維度(np.expand_dims, np.newaxis)和刪除維度(np.squeeze)的方

    這篇文章主要介紹了詳解Numpy擴(kuò)充矩陣維度(np.expand_dims, np.newaxis)和刪除維度(np.squeeze)的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • python中web框架的自定義創(chuàng)建

    python中web框架的自定義創(chuàng)建

    這篇文章主要為大家詳細(xì)介紹了python中web框架的自定義創(chuàng)建,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09

最新評(píng)論