那麼,Python做爬蟲究竟比其他語言好在哪裡呢?
最近學習爬蟲技術,看很多介紹爬蟲都是用Python寫的。
那麼,Python做爬蟲究竟比其他語言好在哪裡呢?
爬蟲需要處理的一些問題:
- 發送HTTP請求
- 解析HTML源碼
- 處理反爬蟲機制
- 效率
- ......
說到底就是因為Python在處理上面的事情的時候有很多庫,而且語法簡潔,代碼風騷,開發者的注意點可以集中在自己要做的事情上。
----------------------------------------
簡單的不能再簡單的粗略不嚴謹地回顧一下:
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 爬蟲的速度?