爬虫学习——初步了解爬虫
文章目錄
- 前言
- 一、爬蟲是什么
- 二、爬蟲能用來干什么
- 三、爬蟲的分類
- 四、爬蟲的矛與盾
- 1、反爬機制
- 2、反反爬策略
- 3、Robots.txt(君子協議)
- 五、爬蟲的基本流程
- 六、第一個爬蟲程序
- 1.導入urlopen包
- 2.打開網址,得到響應
- 3.解碼
- 4.保存文件
前言
最近在學習之余迷上了看電視劇,但是想要看的電視劇又不在同一個APP里,全部充會員也不太現實,所以就想著簡單入門一下爬蟲,爬取自己想要看的電視劇,讓自己的暑假過的更多姿多彩一點!
一、爬蟲是什么
首先我們要先清楚爬蟲是什么,在百度百科的詞條中是這樣解釋的:
爬蟲一般指網絡爬蟲。 網絡爬蟲(又稱為網頁蜘蛛,網絡機器人,在FOAF社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。
淺顯一點講,爬蟲就是自動獲取網頁內容的程序。 舉個例子來說吧,我們在寫論文或者有時候需要查閱資料的時候,直接百度搜索你會得到很多無用的信息,但是如果你使用爬蟲通過關鍵字篩選,就可以篩掉大部分你不需要的信息,這樣可以大大節省我們的時間,使我們的生活變得更快捷更高效。
二、爬蟲能用來干什么
然后我們要明白爬蟲可以用來干什么,他能給我們帶來什么。我在網上看了好多篇關于爬蟲的文章,對于爬蟲的功能可以基本上概括為五個方面:
- 獲取網頁
- 提取信息
- 保存數據
- 調研
- 刷流量和秒殺
對于獲取網頁和提取信息的話,可以說是比較耳熟吧,以前經常聽到過,但對于后面三個方面的話,是基本沒有了解的,所以在這兒也就不去過多的解釋,等后面學到的時候我在來補充一下吧。
對于爬蟲獲取網頁的功能,我們可以簡單的理解為就是我們向網頁的服務器發送網絡請求,然后服務器返回給我們網頁的源代碼。
對于爬蟲提取信息的功能,我們可以這樣理解,就是我們初步獲取到的網頁源碼中包含了很多雜亂無章的信息,這些信息中只有一小部分是我們需要的,所以我們要對源碼進行進一步的篩選來得到我們最終想要的信息。(注意和前面第一點講的是不太一樣的,)
三、爬蟲的分類
接下來我們可以了解一下爬蟲的分類,根據使用場景,大致可以分為以下幾種類型:
- 通用網絡爬蟲
- 聚焦網絡爬蟲
- 增量式網絡爬蟲
通用爬蟲功能強大,采集面廣泛,通常用于搜索引擎,比如百度瀏覽器就是一個很大的爬蟲程序。
聚焦爬蟲功能相對單一,只針對特定網站的特定內容進行爬取,比如說去某個網站批量獲取某些數據,這也是我們個人最常用的一種爬蟲了。
增量式爬蟲其實是聚焦爬蟲的一個迭代爬蟲,它只采集更新后的數據,對老數據是不采集,相當于一直存在并運行,只要有符合要求的數據更新了,就會自動爬取新的數據。
四、爬蟲的矛與盾
1、反爬機制
反爬機制就是我們要訪問的網站對于爬蟲的一種限制,畢竟網站的開發者肯定想要訪問網站的是人而不是一段代碼。
2、反反爬策略
反反爬策略可以理解為我們對于網站反爬機制的一種抵制。(屬實是道高一尺,魔高一丈)
3、Robots.txt(君子協議)
Robots.txt(君子協議),又稱為“網絡爬蟲排除標準”,它的作用就是網站告訴你哪些東西能爬,哪些不能爬。
這個Robots協議去哪看?一般情況下直接在網站首頁網址后面加/robots.txt就能查看,比如百度的Robots協議就在https://www.baidu.com/robots.txt ,可以看到里面有很多網址都規定了不能爬,比如Disallow:/shifen/ 說明當前Disallow:/shifen以及Disallow:/shifen下面的子目錄網頁均不能爬。
對于爬蟲者來說,基本上就是口頭協議,你違反了它你有可能會被追究法律責任,但不違反它,爬蟲將是爬不到什么數據,所以平時雙方都是睜一只閉一眼,不要太囂張就可以了。
五、爬蟲的基本流程
爬蟲程序基本可以分為四步驟去編寫:
六、第一個爬蟲程序
前面我們對爬蟲做了一下初步的了解,接下來我們自己動手去寫一個爬蟲小程序,爬取一下百度的網頁信息。
1.導入urlopen包
from urllib.request import urlopen2.打開網址,得到響應
from urllib.request import urlopen #導入urlopenurl = "http://www.baidu.com/" #要爬取的網址 resp = urlopen(url) #打開網址并返回響應print(resp.read()) #打印信息可以看到打印出來的信息都是我們看不太懂的字符串信,所以接下來我們需要去解碼,使這些信息變成我們可以看得懂的。
3.解碼
解碼這個地方又設計到了編碼問題,不過學過一點Python的都知道,就不在解釋了,我們需要utf-8 格式的信息,
from urllib.request import urlopen #導入urlopenurl = "http://www.baidu.com/" #要爬取的網址 resp = urlopen(url) #打開網址并返回響應print(resp.read().decode("utf-8")) #打印解碼信息可以看到現在打印出來的信息已經是解碼后的了。
4.保存文件
之后我們把爬取的信息存儲下來。
from urllib.request import urlopen #導入urlopenurl = "http://www.baidu.com/" # 要爬取的網址 resp = urlopen(url) with open("mybaidu.html", mode="w", encoding='utf-8') as f: # 創建html文件并保存 ,encoding設置編碼f.write(resp.read().decode("utf-8")) # 讀取網頁的頁面源代碼print("over!")可以看到**over!**保存成功
這是mybaidu.html文件中的內容
運行該文件,打開了一個和百度搜索完全一致的網頁,說明我們爬取成功,第一個爬蟲程序圓滿寫完。
總結
以上是生活随笔為你收集整理的爬虫学习——初步了解爬虫的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 保姆级 nas 服务器搭建手册
- 下一篇: 多表连接查询与高级查询上(第三天)