那麼,Python做爬蟲究竟比其他語言好在哪裡呢?

最近學習爬蟲技術,看很多介紹爬蟲都是用Python寫的。
那麼,Python做爬蟲究竟比其他語言好在哪裡呢?


爬蟲需要處理的一些問題:

  • 發送HTTP請求
  • 解析HTML源碼
  • 處理反爬蟲機制
  • 效率
  • ......

說到底就是因為Python在處理上面的事情的時候有很多庫,而且語法簡潔,代碼風騷,開發者的注意點可以集中在自己要做的事情上。
----------------------------------------
簡單的不能再簡單的粗略不嚴謹地回顧一下:

發送HTTP請求:
Python里我最喜歡用requests發送請求,發送請求的代碼是這樣的:

requests.get(URL) # GET
requests.post(URL, DATA) # POST
requests.put / delete / head / ... # 各種請求
# P.S.使用下面的代碼處理Cookie更酸爽
requests.Session()

到目前為止我還沒有找到別的語言有比這個更加簡單的發送HTTP請求的方式了(不排除我見識短的可能性)。

解析HTML源碼:
Python默認可以使用HtmlParser來解析HTML,如果你覺得用著不爽(確實用著不爽),可以有很多第三方庫來優雅的做這些事情(lxml / BeautifulSoup / ...),甚至可以通過一些庫(selenium等)來直接使用瀏覽器。你可以直接使用類似 body.div.a["href"] 這樣簡單到爆的語法取自己需要的內容。

處理反爬蟲機制:
還是Python的requests庫,它可以很方便的套上一個代理IP:

request = requests.Session()
requests.proxies = ....

效率:
爬蟲的效率問題基本不在解析信息的速度上,網路IO的時間其實才是大頭。比如你請求網頁花了500ms,相應的你的解析速度是1ms還是10ms已經不重要了。

其他還有很多地方就不一一總結了,簡而言之,寫爬蟲來講,Python相對於其它語言的優勢在於有足夠簡介的語法和足夠多的庫支持,開發效率很高,而且運行效率方面,網路IO的時間已經大大沖淡了Python的效率問題。
用Python可以1個人做5個人的事情,只是多用10倍的機器,多麼划算。

如上~~~


推薦閱讀:

關於用python抓取知乎關注的人?
有沒有什麼東西是 Go 可以做但 Python 做不到的?
如何理解 Python 的 Descriptor?
如何優化 Python 爬蟲的速度?

TAG:互聯網 | Python | 爬蟲計算機網路 |