目的
通過編寫程序爬取互聯網上的優質資源
爬蟲必須要使用python嗎
非也~
編程語言知識工具,抓取到數據才是目的,而大多數爬蟲采用python語言編寫的原因是python的語法比較簡單,python寫爬蟲比較簡單!好用!而且python有很多第三方支持的庫。很多繁瑣復雜的工作直接交給這些第三方庫就可以,自己不需要做這些額外的準備工作只需要導入庫就好
爬蟲合法嗎
爬蟲在法律上不禁止,但是有違反的風險(類比菜刀,法律上允許菜刀的存在,但是有人會使用菜刀做一些非法的事)
爬蟲分為善意的和惡意的,如下圖所示
反爬機制
門戶網站,可以通過制定相應的策略或者技術手段,防止爬蟲程序進行網站數據的爬取,如加密機制
反反爬機制
爬蟲程序通過制定相關的策略或者技術手段,破解門戶網站的反爬機制,獲取門戶網站的相關數據
robots.txt協議
君子協議(防君子不防小人),規定了網站中哪些數據可以被爬蟲爬取,哪些數據不可以被爬取,所有網站的君子協議所在地都是,網站名后加子目錄/robots.txt,如下面的百度的君子協議
網址:https://www.baidu.com/robots.txt
第一個爬蟲程序
使用工具:pycharm
爬取百度頁面的資源
代碼:
from urllib.request import urlopen
url = "https://www.baidu.com"
response = urlopen(url)#打開網址會返回響應的數據
#response.read()讀取響應回的數據中的內容(內容是字節的形式,所以要解碼成文字)
with open("myBaidu.html", mode="w",encoding="utf-8") as f:#寫入模式f.write(response.read().decode("utf-8"))
保存文件中的內容:
?點擊谷歌瀏覽器,對爬取到的html頁面進行打開
結果如下圖,和真正的百度頁面完全相同
為什么拿到的是html代碼,瀏覽器頁面顯示卻不是?
其實瀏覽器拿到的也是html代碼,只是瀏覽器會把html代碼(源代碼)運行成正常的頁面動畫及數據,因此爬蟲讀取到的實際上是網頁的源代碼