您好,登錄后才能下訂單哦!
Python 的知識很多,基本的入門就有很多東西要學,還有各種合樣的庫要學習。很多同學學了一段時間,進展很慢,學了前面忘了后面!今天我就給大家介紹一個非常簡單的爬蟲小例子,來綜合練習,非常不錯!
1.爬取的目標
我們這次選擇一個比較好玩的網站叫"好奇心日報",里面的內容非常有趣,而且圖片都是高清,非常漂亮,今天我們就探索一下好奇心日報的爬取。
2.準備工作
前期需要對這個網站進行簡單的分析,網頁的結構,源碼的查看,有無反爬策略等等。
1)第一步是發現好奇心日報的文章地址編碼是按數字遞增的,例如: http://www.qdaily.com/articles/38425.html
2)截止今天,好奇心日報的文章編碼已經從1到55613了,共5萬篇文章。
3)然后我發現文章的標題,分享數和文章發布日期都寫死在頁面里,但是評論數不在頁面中 。
4)為了找到評論數,我使用谷歌瀏覽器的F12的 network 功能,發現了評論是通過json 數據獲得的,地址類似: http://www.qdaily.com/comments/article/38425/0.json 。
5)看到 json 的數據自帶評論,于是我順便把評論的內容也爬下來了,順便做一個評論的詞云
看個人資料,有Python資料
3.主體代碼
1)先創建數據庫
數據庫我們用選擇最最簡單的 sqlite3 ,這個數據非常適合小白入門。這個庫的詳細用法。
用一個類QDaily_DB來專門處理db的創建,保存和關閉.上面的代碼是創建部分:
1)創建一個數據庫名字叫qdaily.db,里面分布建2張表
2)一張表qdality用來保存好奇心日報的id,標題,點贊分享數,日期和評論數
3)一張表comments用來保存好奇心日報的id和每一條評論的內容
2)網頁爬取
網頁的爬取,我們這里并沒有用什么高深的庫和爬蟲框架,用簡單的requests+bs4的組合,這一個一套比較適合小白上手的庫,也沒有用并發框架。
1).網頁的下載
前面說了,好奇心日報的url的規則已經找到,只要一個一個解析就行!
我們輸入一個id,來構造一個url,然后把這個url填入到requests中解析即可。
注意編碼方式,獲得頁面的內容html_content,然后把詳細的html_content內容填入parse_html類函數中進行詳細處理.
為了防止出現爬取異常,一定要加入try/except和finally這樣的異常保護
3).頁面的解析和評論內容的獲取
下面就是這個項目稍微難有點的地方,需要用BeautifulSoup來詳細解析頁面的內容。
評論區的內容稍微有一點點的復制,需要用構造一個header取獲取,直接解析頁面無法獲取。
sqlite的操作非常簡單,用的也是SQL的語法,上手來說非常方便。我們用insert語句動態插入數據,然后execute去執行,最后不要忘記commit!
05.:數據的展示
爬完5萬篇文章用了快一天,雖然多線程可以加快速度,但我采用單線程減輕好奇心日報服務器的壓力, 先是根據文章分享數排序:
然后是根據文章的評論數排序:
06:好奇心日報文章id與評論數的關系
感覺好奇心日報用的人越來越多了,那么隨著id的增加,文章的平均評論數應該也會增加。
可以看出越到后面,平均每篇文章的分享數就越多,反映出好奇心日報的用戶數變多
07:根據評論生成詞云
用matplotlib和wordcloud庫生成一個詞云評論圖,看看哪些關鍵字比較集中!
生成的詞云結果如下
發現評論比較多的是"哈哈哈","是的","呵呵","謝謝"這樣的短口語詞匯。整個這個實戰小例子還是非常有趣的,從數據爬取-數據入庫,數據分析和詞云,一條龍服務,還是非常值得去試試,對初學者強化基礎知識,入門比較有幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。