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...