Python 3爬蟲網(wǎng)易云(一)--每天進步一點點(Request庫用法)

**寫在最前面!??!本文只適合小白看,大牛就不用圍觀了,非要圍觀的也請槽點輕吐**

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------爬蟲的基本流程 -----

發(fā)起請求

通過HTTP庫向目標站點發(fā)起請求,也就是發(fā)送一個Request,請求可以包含額外的header等信息,等待服務器響應?

獲取響應內(nèi)容

如果服務器能正常響應,會得到一個Response,Response的內(nèi)容便是所要獲取的頁面內(nèi)容,類型可能是HTML,Json字符串,二進制數(shù)據(jù)(圖片或者視頻)等類型?

解析內(nèi)容

得到的內(nèi)容可能是HTML,可以用正則表達式,頁面解析庫進行解析,可能是Json,可以直接轉(zhuǎn)換為Json對象解析,可能是二進制數(shù)據(jù),可以做保存或者進一步的處理 - 保存數(shù)據(jù)保存形式多樣,可以存為文本,也可以保存到數(shù)據(jù)庫,或者保存特定格式的文件


接下來我將以爬取網(wǎng)易云為例一步一步進行上述步驟的實現(xiàn)**本爬蟲基于Python 3.x? ? IDE為 pycharm

Requests —抓取網(wǎng)頁內(nèi)容

Requeest中主要用到兩類方法:Request和Response

什么是Request,Response

瀏覽器發(fā)送消息給網(wǎng)址所在的服務器,這個過程就叫做HTPP Request服務器收到瀏覽器發(fā)送的消息后,能夠根據(jù)瀏覽器發(fā)送消息的內(nèi)容,做相應的處理,然后把消息回傳給瀏覽器,這個過程就是HTTP Response瀏覽器收到服務器的Response信息后,會對信息進行相應的處理

然后展示主要爬取方法:

requests.get()包含參數(shù):

url--即統(tǒng)一資源定位符,也就是我們說的網(wǎng)址

params--請求參數(shù),即網(wǎng)頁鏈接"?"后的參數(shù)

headers--請求頭的所有信息

proxies--代理信息

接下來我們試一試最簡單的爬取

import requests

a = requests.get('http://music.163.com/#/artist?id=13193')

print(a.status_code,a.text)


status_code表示狀態(tài)碼(這里為200)? text表示數(shù)據(jù)為文本類型結(jié)果返回的是網(wǎng)頁的源代碼


代碼過長? 所以中間切了很多 然后,你會發(fā)現(xiàn)有些網(wǎng)頁會識別出程序爬取網(wǎng)頁信息

所以我們需要模擬瀏覽器登陸獲取網(wǎng)頁信息這就需要用到前面介紹的參數(shù)了具體的請求頭信息在瀏覽器中F12查看(這里以火狐瀏覽器為例)在左側(cè)訪問記錄中,找到“200 http://music.163.com/#/artist?id=13193”這一條,點擊查看其對應的請求和響應報頭具體內(nèi)容:

包含請求時的頭部信息,如User-Agent,Host,Cookies等信息

接下來,在爬蟲代碼里自定義網(wǎng)頁請求報頭:代碼很簡單

import requests

a = ('http://music.163.com/#/artist?id=13193')

header = {"User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0'}

url_a = requests.get(url = a,headers = header)

print(url_a.status_code,url_a.text)```

爬取出來的結(jié)果和上面一樣,不過偽裝成了模擬器登陸獲取。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • 聲明:本文講解的實戰(zhàn)內(nèi)容,均僅用于學習交流,請勿用于任何商業(yè)用途! 一、前言 強烈建議:請在電腦的陪同下,閱讀本文...
    Bruce_Szh閱讀 13,008評論 6 28
  • Refer to: www.threemeal.com/blog/12/ 中間件 中間件是一個鉤子框架,它們可以介...
    蘭山小亭閱讀 16,785評論 9 164
  • Python學習網(wǎng)絡爬蟲主要分3個大的版塊:抓取,分析,存儲 另外,比較常用的爬蟲框架Scrapy,這里最后也詳細...
    楚江數(shù)據(jù)閱讀 1,530評論 0 6
  • 1 前言 作為一名合格的數(shù)據(jù)分析師,其完整的技術(shù)知識體系必須貫穿數(shù)據(jù)獲取、數(shù)據(jù)存儲、數(shù)據(jù)提取、數(shù)據(jù)分析、數(shù)據(jù)挖掘、...
    whenif閱讀 18,313評論 45 523

友情鏈接更多精彩內(nèi)容