python 爬蟲入門解析

在正式的介紹網絡爬蟲技術之前,首先按照我自己的學習經歷,來說下網絡爬蟲是什麼,需要哪些技術。

(一)什麼是網絡爬蟲

爬蟲,按照其字面意思來看,就是一隻會爬的蟲子。那什麼是網絡爬蟲爬蟲呢?沒錯,就是一支在網絡上爬的蟲子。只不過這是在網絡上爬的蟲子,比較特殊,在爬的時候,他還在拾取網絡上的數據。

(二)學習網絡爬蟲需要哪些技能呢?

既然你已經知道什麼是網絡爬蟲了,那麼你肯定在想,我怎麼樣才能製作一隻爬蟲呢?因此,在正式開始之前,我們一起來做一隻小爬蟲。

目標網站:就是我們經常用的百度搜索的首頁;

目標:把首頁的源碼下載下來

好了,解析來開始編寫抓取程序。請確保,已經安裝好python3 和requests 庫。

import requests

url = "http://www.baidu.com"

r = requests.get(url)
html = r.text
print(html)

然後讓我們運行看下結果:


<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>ç¾åº¦ä¸ä¸ï¼ä½ å°±ç¥é</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=ç¾åº¦ä¸ä¸ class="bg s_btn"></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>æ°é»</a> <a href=http://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>å°å¾</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>è§é¢</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>è´´å§</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&amp;tpl=mn&amp;u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>ç»å½</a> </noscript> <script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">ç»å½</a>');</script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style="display: block;">æ´å¤äº§å</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>å³äºç¾åº¦</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>&copy;2017&nbsp;Baidu&nbsp;<a href=http://www.baidu.com/duty/>使ç¨ç¾åº¦åå¿è¯»</a>&nbsp; <a href=http://jianyi.baidu.com/ class=cp-feedback>æè§åé¦</a>&nbsp;京ICPè¯030173å·&nbsp; <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>

沒錯,就是就是這麼簡單,我們就把百度搜索的首頁給抓取下來了。是不是很有成就感?

那麼接下來,我們就開始說學習爬蟲需要掌握哪些技能。

 

1、語言及工具的選擇

看上面的例子,我們可以看到,首先需要掌握一門合適的語言,這裏推薦python, 版本最好是3, 然後是選擇一個合適的開發工具,可以使用pycharm,也許入門的時候使用會比較難,但到後面項目管理、編寫程序和調試的時候,你就會發現他的好處了。

2、 必要的網絡基礎

說的只是基礎的基礎,也就是入門爬蟲必須的技能。接下開始介紹其他的技能。

從前面的例子上, 我們可以看到,有一個叫  url 的東東,這個是什麼呢?其實看到後面感覺就和平常所說的網址很像,幾乎沒有任何區別,只不過在在這裏它有另外一個高大上的名字,叫網絡資源定位符。你也可以這麼理解,它就是一個文件的路徑,只不過這個路徑指向的文件不是放在你的電腦上,而是放在服務器。此外,html,還需要了解一下,知道什麼是標籤,屬性,id,class等,這個部分大約需要花費兩三天的時間。

3、 抓取

瞭解了  url 是什麼之後,接下來就是如何通過這個  url   在服務器上抓取數據了

在例子的頭部,我們使用import 導入了一個叫 requests 的庫, 這個庫,也就是我們用來通過url從服務器拿數據的工具。

 

4、解析

例子上,我們只是把的數據打印了出來,並沒有從中提取出數據。因此,爲了將數據提取出來,還需要掌握一些提取數據的工具。比如,正則表達式, beautifulsoup 等

 

5、存儲

解析完成後,接下來就是存儲了。

存儲的工具有很多,比如excel格式的csv, 也可以採用文本存儲, 數據庫可以使用redis, mongodb, mysql等

 

6、速度

獲取、解析、存儲都做完了, 但是速度太慢了,怎麼辦呢?這個時候就要考慮多進程,多線程,分佈式,框架等了

 

好了,網絡爬蟲設計到的部分大致就這麼多,以後的系列介紹內容,將會圍繞這幾個部分展開。

每個部分看起來都很少,然後每個部分展開來看都會有很多,比如網頁源碼的獲取,就會涉及到很多種情況,可以先百度,自行了解一下。

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