Python成長記十五(python爬蟲)

2021-08-22 05:52:07 字數 2451 閱讀 4392

1、什麼是網路爬蟲

2、爬蟲的步驟

(1)明確目的。明確我們想要的資料,通過調研驗證需求的可行性

(2)找到資料對應的網頁

(3)分析網頁的結構找到資料的標籤位置

(4)模擬http請求,向伺服器傳送這個請求,獲取到伺服器返回的html

(5)用正規表示式提取我們要的資料

3、爬蟲的必要技能

(1)斷點除錯。比如pycharm、vscode等開發工具的除錯(這一步很重要)

(2)學會一些必要的第三方庫,有助於我們提高開發效率。比如beautiful

soup

,scrapy等(本案例我使用原生爬蟲)

(3)技術難點突破,即爬蟲、反爬蟲、反反爬蟲(比如一些驗證碼破解等)

(4)ip被封,使用**ip(必要技術)

(5)正規表示式(關鍵技術)

(6)頁面結構分析(基本技能)

(7)http模擬請求(熟悉http相關的技術)

(8)封裝提高**復用性

4、簡單的案例

大致效果:

第一步:匯入urllib包,引入request模組和正規表示式模組

from urllib import request

import re

#目標**位址

url = ''

#包含目標資訊的結構

root_pattern = '([\s\s]*?)

'#主播暱稱包含的位置

name_pattern = '([\s\s]*?)'

number_pattern = '([\s\s]*?)'

第三步:獲取我們想要的內容

#拉取伺服器響應的內容 

def __fetch_content(self):

r = request.urlopen(spider.url)

htmls = r.read() #bytes

htmls = str(htmls,encoding='utf-8')

return htmls

第四步:使用正規表示式分析處理我們想要的內容

def __analysis(self, htmls):

root_html = re.findall(spider.root_pattern,htmls)

anchors =

for html in root_html:

name = re.findall(spider.name_pattern,html)

number = re.findall(spider.number_pattern,html)

anchor =

return anchors

第五步:資料精煉

#資料精煉

def __refine(self,anchors):

l = lambda anchor:

return map(l,anchors)

解釋:strip()函式是去掉空格

第六步:對結果進行排序(降序排序)

#排序

def __sort(self,anchors):

anchors = sorted(anchors, key=self.__sort_seed,reverse=true)

return anchors

#按數字排序並處理帶有萬單位的資料

def __sort_seed(self,anchor):

r = re.findall('\d*',anchor['number'])

number = float(r[0])

if '萬' in anchor['number']:

number *= 10000

return number

第七步:展現內容,這裡只做簡單的輸出。當然了也可以將資料儲存在資料庫中

#展現

def __show(self,anchors):

for rank in range(0,len(anchors)):

print("第" + str(rank+1)+ "名" + ": " + anchors[rank]["name"]+ " " +

anchors[rank]["number"] + "人")

總結:通過以上簡單的小案例中關鍵的**可以看出,要做爬蟲我們需要掌握http請求、正規表示式等關鍵技術,如果學會一些優秀的框架將大大提公升我們的開發效率,比如beautifusoup , scrapy等,後續我會不斷的探索和分享相關框架的使

python成長記(一)

蝸牛之前是學過一點python的,不過只是學過而已看,時間長不用基本多忘了。為了做畢設,要學習flask框架,覺得最好還是把python再過一遍。可能覺得蝸牛東一頭西一頭的,看的東西太多。可是蝸牛有什麼辦法,我也很絕望啊!還是靜下心來看書吧,蝸牛會住上別墅的,蝸牛會開上豪車的 我是華麗的分割線 1....

成長思考記

大三下開學來的時間是非常充裕的,考研 保研 出國,主意已定,所有的東西彷彿瞬間改變了意義。於是,我又有了時間去讀書,去思考,去成長。和同學談 忍經 沒有共鳴。他們剛聽到這書名字就堅決反對,為什麼要忍!要的就是個性!呵,無語,三字以蔽之 年輕人!許多人不讀此書,可能讓人粗略想到的是 忍氣吞聲 之類的意...

小白成長記

2011 4 12 今天安排的任務是把測試環境搭建好,但是事情的發展總是跟計畫有所出入,有時甚至大相徑異,尤其在你對你要做的事情不是很熟甚至相當陌生的情況。me很不幸,從上午八點半忙到晚上快十點,刨除中間吃飯的兩個小時時間,也算是全天性投入了,最後居然還是沒成功。me的任務是安裝 redhat4.7...