此學(xué)習(xí)筆記整理于 Ryan Mitchell Web Scraping with Python- Collecting Data from the Modern Web (2015) Chapter 8 Reading and writing natural languages
天啦嚕传透!這個筆記真是讓人興奮不已啊其弊!代碼寫得太好了作者衅谷。不多說了椒拗,上代碼和解釋。
1会喝,首先陡叠,新建database玩郊,這一段代碼直接在mysql里寫的。
值得學(xué)習(xí)的地方有:1)并沒有create database Wikipedia枉阵;這個過程译红,直接上table,然后后面跟著‘Wikipedia’.‘pages’.厲害了兴溜,我的書侦厚。
然后依次是名稱,類型拙徽,默認(rèn)值刨沦,還有其他,比如第一個是自動增加膘怕,第三個是系統(tǒng)時間想诅。
最后加上primary key是哪一個。
2. 開始從wiki的一個頁面開始爬取wiki內(nèi)部鏈接并存儲起來岛心。
從上面的database結(jié)構(gòu)我們可以看出来破,存儲的內(nèi)容主要分為兩個部分:鏈接地址url和鏈接之間的關(guān)系(links from onepage to the other one)
還是一個函數(shù)一個函數(shù)看吧。
insertpageifnotexits函數(shù)
在數(shù)據(jù)庫找url這個鏈接忘古,如果沒有(rowcount=0),那就把這個鏈接存到database里面的pages徘禁。cur.commit() 確認(rèn)更改。返回pages的最后一行髓堪,就是我們新存進去的那個鏈接所在的行送朱。如果存在的話就返回cur.fetchone()[0],這個【0】是代表pages這個table的第一列即是id這一列。id是自動編號的干旁,所以id的值等于其所在行的行數(shù)驶沼。
insertLink函數(shù)
看鏈接是否存在,如果不存在插入并確認(rèn)保存疤孕。跟上面一個函數(shù)類似商乎,就不多說了。
getLinks函數(shù)
先看打開這個一個站點祭阀,找到所有的內(nèi)部鏈接,然后是把內(nèi)部鏈接存儲起來鲜戒,再把link存儲起來专控。然后空的pages,如果發(fā)現(xiàn)的新頁面沒有研究過再進入這個新頁面并向下一層.最多向下走4層遏餐,總共走到第5層(第5層也分析了伦腐。)。
這個getlinks也可以這么寫失都。
P.S.:沒能上車的小伙伴歡迎留言柏蘑,如果我會我直接回答你幸冻!如果不會,我谷歌后回答你咳焚!如果要加我微信洽损,不行。