前言
很久之前在沒有學(xué)過Python的時候偶然發(fā)現(xiàn)有種叫爬蟲的東西,感覺很好玩。后來就看著一些視頻教程跟著學(xué)了一些,后來于是就忘記了。但由于本人掌握的實在有限,所以在這里整理一下加深記憶,所以有了這一系列的文章。
更多關(guān)注:http://www.mknight.cn/
初識爬蟲
關(guān)于爬蟲是什么就不用解釋了,所以直接開始一步一步的寫下去。在所有的環(huán)境里都是使用的Python3,畢竟3是大勢所趨。或許在某些案例里也會有一些Python2的演示,畢竟不是所有的機器都升級到了3。
那么怎么開始爬蟲呢?首先每個有點計算機常識的人都知道,比如打開每一個網(wǎng)站所展現(xiàn)出來的文字、畫面或者影像等等都是由HTML、js、css等等組成的,而我們要做的就是,根據(jù)要求來提煉我們需要的元素或者資源。
#引入urllib
from urllib import request
#指定URL
url = 'http://www.baidu.com'
data = request.urlopen(url)
#別忘了解碼指定字符集,也可能是utf-8,unicode等等
data = data.read().decode('utf-8')
print(data)
#執(zhí)行這段程序就會打印出百度首頁的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">
<meta name="theme-color" content="#2932e1">
......
也許有人會遇到下面這種情況:
Traceback (most recent call last):
File "C:/Users/demo.py", line 6, in <module>
data = request.urlopen(url)
http.client.RemoteDisconnected: Remote end closed connection without response
這是因為有些網(wǎng)站就是不想你們這些小蟲子爬,因此就禁止訪問。所以呢,就要學(xué)習(xí)一下偽裝瀏覽器的方法。
偽裝瀏覽器
簡單的說User-Agent就是客戶端(瀏覽器)等應(yīng)用程序使用的一種特殊的網(wǎng)絡(luò)協(xié)議,在每次瀏覽器(郵件客戶端/搜索引擎蜘蛛)進(jìn)行 HTTP 請求時發(fā)送到服務(wù)器,服務(wù)器就知道了用戶是使用什么來訪問的。既然是人為規(guī)定的協(xié)議,那么就是說不管什么瀏覽器,默認(rèn)的UA都是可以更改的。有時候為了達(dá)到一些不可告人的目的,就經(jīng)常需要更改一下UA的設(shè)置,比如偽裝一下瀏覽器類型,比如把瀏覽器偽裝成手機上網(wǎng)。
在這里就需要用到urllib.request.Request來修改header。
from urllib import request
url = 'http://www.qiushibaike.com'
user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15'
headers = {'User-Agent':user_agent}
data_res = request.Request(url=url,headers=headers)
data = request.urlopen(data_res)
data = data.read().decode('utf-8')
print(data)
現(xiàn)在就可以使用加工過的headers來抓取網(wǎng)頁了。
更多關(guān)注:http://www.mknight.cn/