在現(xiàn)在這個(gè)信息爆炸的時(shí)代,要想高效的獲取數(shù)據(jù),爬蟲是非常好用的。而用python做爬蟲也十分簡(jiǎn)單方便,下面通過一個(gè)簡(jiǎn)單的小爬蟲程序來看一看寫爬蟲的基本過程:
準(zhǔn)備工作
語(yǔ)言:python
IDE:pycharm
首先是要用到的庫(kù),因?yàn)槭莿側(cè)腴T最簡(jiǎn)單的程序,我們主要就用到下面這兩:
import requests //用于請(qǐng)求網(wǎng)頁(yè)import re //正則表達(dá)式,用于解析篩選網(wǎng)頁(yè)中的信息
其中re是python自帶的,requests庫(kù)需要我們自己安裝,在命令行中輸入pip install requests即可。
然后隨便找一個(gè)網(wǎng)站,注意不要嘗試爬取隱私敏感信息,這里找了個(gè)表情包網(wǎng)站:
注:此處表情包網(wǎng)站中的內(nèi)容本來就可以免費(fèi)下載,所以爬蟲只是簡(jiǎn)化了我們一個(gè)個(gè)點(diǎn)的流程,注意不能去爬取付費(fèi)資源。
我們要做的就是通過爬蟲把這些表情包下載到我們電腦里。
編寫爬蟲程序
首先肯定要通過python訪問這個(gè)網(wǎng)站,代碼如下:
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0' } response = requests.get('https://qq./zjbq/',headers=headers) //請(qǐng)求網(wǎng)頁(yè)
其中之所以要加headers這一段是因?yàn)橛行┚W(wǎng)頁(yè)會(huì)識(shí)別到你是通過python請(qǐng)求的然后把你拒絕,所以我們要換個(gè)正常的請(qǐng)求頭。可以隨便找一個(gè)或者f12從網(wǎng)絡(luò)信息里復(fù)制一個(gè)。
然后我們要找到我們要爬取的圖片在網(wǎng)頁(yè)代碼里的位置,f12查看源代碼,找到表情包如下:
然后建立匹配規(guī)則,用正則表達(dá)式把中間那串替換掉,最簡(jiǎn)單的就是.*?
t = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'
像這樣。
然后就可以調(diào)用re庫(kù)里的findall方法把相關(guān)內(nèi)容爬下來了:
result = re.findall(t, response.text)
返回的內(nèi)容是由字符串組成的列表,最后我們經(jīng)由爬到的地址通過python語(yǔ)句把圖片下下來保存到文件夾里就行了。
程序代碼
import requests import re import os image = '表情包'if not os.path.exists(image): os.mkdir(image) headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0' } response = requests.get('https://qq./zjbq/',headers=headers) response.encoding = 'GBK'response.encoding = 'utf-8'print(response.request.headers)print(response.status_code) t = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'result = re.findall(t, response.text)for img in result: print(img) res = requests.get(img[0]) print(res.status_code) s = img[0].split('.')[-1] #截取圖片后綴,得到表情包格式,如jpg ,gif with open(image + '/' + img[1] + '.' + s, mode='wb') as file: file.write(res.content)
最后結(jié)果就是這個(gè)樣子: