Python 爬蟲爬取百度百科網(wǎng)站

利用python寫一個爬蟲,爬取百度百科的某一個詞條下面的全部鏈接和每一個鏈接內(nèi)部的詞條主題和摘要。利用request庫爬取頁面,然后利用BeautifulSoup對爬取到的頁面提取url和關(guān)鍵內(nèi)容。使用一個類來管理url,使爬取到的url不會被重新爬取。遍歷url的時候,將每個url指向的html頁面爬取下來,提取出感興趣的文本,保存到文件。最后生成一個某一個詞條下面的包含的所有詞條和摘要的文件。

用到的Python的庫:

1. urllib.request

2.BeautifulSoup

關(guān)于urllib.request

urllib.request 是python 3 下面的一個庫,不支持python2,(python2的是requests庫),本來是想用requests的,但是python的中文編碼問題一直沒有解決,但好想問題已經(jīng)找到了,就是抓取到的網(wǎng)頁的內(nèi)容編碼是ios-8859-1,但是網(wǎng)頁的response頭部的編碼是utf-8,導(dǎo)致編碼不統(tǒng)一,造成亂碼。解決方案,在另外的一遍文章討論。總之就是,用了這個urllib.request庫,當(dāng)然源代碼里面也有使用requests庫,造成亂碼的源碼。這是關(guān)于亂碼的分析的文章http://www.lxweimin.com/p/f819ab06a53a。


關(guān)于BeautifulSoup

BeautifulSoup是一個神器啊,將抓取到的html,轉(zhuǎn)換為一顆dom樹,可以通過很簡單的語法,來訪問特定的標(biāo)簽和標(biāo)簽下面的屬性。而且還支持正則表達(dá)式。


源碼的思路分析:

源碼包括5個文件,main.py , HtmlParse.py,UrlManage.py,html_outputer.py,html_download2.py

main.py 是程序的入口

HtmlParse.py,UrlManage.py,html_outputer.py,html_download2.py 每一個文件對應(yīng)一個類,他們分別的功能是

UrlManage.py 負(fù)責(zé)url管理,這個類下面的數(shù)據(jù)成員是 old_urlset 和new_urlset,分別表示已經(jīng)爬取的頁面,和沒有爬取的頁面。

html_download2.py 負(fù)責(zé)將網(wǎng)頁下載下來(這里很容易出現(xiàn)下載下來的網(wǎng)頁是亂碼的問題,以后慢慢討論這個問題)

HtmlParse.py 負(fù)責(zé)將爬取下來的網(wǎng)頁做分析。利用BeautifulSoup,提取網(wǎng)頁的詞條主題和里面沒包含的url

html_outputer.py 負(fù)責(zé)將分析之后得到的詞條主題寫到文件里面。


程序的目錄:

輸出文件是output.txt, 程序運(yùn)行結(jié)果:

shell的運(yùn)行結(jié)果:

通過main.py 頁面里面count 變量設(shè)置爬取的頁面數(shù),比如100條

源代碼鏈接:

https://github.com/zhaozhengcoder/Spider
?

參考教程:

廖雪峰的python教程http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

靜覓的python教程

http://cuiqingcai.com/category/technique/python

BeautifulSoup官方的文檔

requests庫的官方文檔






最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容