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