Python爬蟲學習筆記(一)

Python爬蟲學習筆記(一)

最近在學python爬蟲,順便把一些學習記錄記下來,可能還有些表述不到位的地方,所以請大家指正下,一起學習,一起進步吧。嗯,這次是一個比較簡單的案例,也就10行代碼左右,爬取網絡源代碼,用到了requests庫,如果沒有安裝的可以用下面的命令安裝一下:

pip install requests

先把源代碼附上,然後我們再慢慢解說了。
這裏是基礎案例,以百度爲例,所以就沒有添加headers裏面的信息,後面會說爬取有反爬蟲的網站,我們該怎麼辦。

import requests

def get_html(url):
    html = requests.get(url)
    if html.status_code == 200:
        html.encoding = 'utf-8'
        print(html.text)
    else:
        print('ERROR:', url)

if __name__ == '__main__':
    url = 'https://www.baidu.com/'
    get_html(url)

毫無疑問,先導包
我們前面已經說了這次用的是requests包,這個包可以解決大部分的爬蟲問題

import requests

然後,獲取界面上的源代碼,這裏用get請求就可以了,這時源碼相關的信息已經貼上了html的標籤

html = requests.get(url)

這時候我們需要判讀我們剛剛的請求是否成功,直接判斷他返回的狀態碼是否等於200就可以了

    if html.status_code==200:

順便說下基礎的返回數字代表的信息

200   成功,服務器已成功處理了請求

3xx 	表示要完成請求,需要進一步操作(跳轉界面之類的)。
 
4xx		 這些狀態代碼表示請求可能出錯(也就是我們代碼方面可能有問題),妨礙了服務器的處理。

5xx		 這些錯誤一般是服務器本身的錯誤,而不是請求或代碼出錯。

再將獲取的html的編碼格式設置爲utf-8

html.encoding = 'utf8'

下一步打印輸出:

 print(html.text)

如果覺得這種輸出不太方便看,可以使用pprint庫先導包

import pprint

調用:

        pprint.pprint(html.text)

然後就是程序的main函數,也就是啓動這個程序
url是你要爬取的目標網址,調用剛剛寫好的方法就可以了

if __name__ == '__main__':
    url = 'https://www.baidu.com/'
    get_html(url)

最後我們來說下一些比較基礎的反爬蟲應對方法,那就是添加headers,裏面放可以有選擇的放三個比較常用的參數

headers = {
    'Referer': '..............',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
    'Cookie': '............'
}

這三個參數來自於你要爬取的網站,按F12或右鍵檢查源碼,network第一個文件header裏,如下圖:
在這裏插入圖片描述
裏面的信息直接複製即可,使用headers方法如下:

 html = requests.get(url, headers=headers)

其它方面我們保持不變,就可以破解反爬蟲中最常見的三種措施了,其他的下次有空我們在一起學習吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章