當前位置:
首頁 > 知識 > python爬蟲案例——糗事百科數據採集

python爬蟲案例——糗事百科數據採集



Linux編程

點擊右側關注,免費入門到精通!



作者丨數據架構師 


https://blog.csdn.net/luanpeng825485697/article/details/78403943

 




通過python實現糗事百科頁面的內容採集是相對來說比較容易的,因為糗事百科不需要登陸,不需要cookie,不過需要設置http的MIME頭,模擬瀏覽器訪問才能正常請求




本案例使用python實現糗事百科數據採集,獲取糗事百科熱門的文章內容和好評數量。


需要安裝BeautifulSoup包




python2.7下



#coding:utf-8


#本實例用於獲取糗事百科熱門的文章內容和好評數量。


import

 urllib2

import

 re

from

 bs4 

import

 BeautifulSoup

#糗事百科需要設置MIME頭才能正常請求,不需要登陸,也不需要cookie


print(

"=======================糗事百科數據挖掘=========================="

)

urlstr=

"https://www.qiushibaike.com/8hr/page/%d"

data={}

def

 

getdata

(html)

:

  

#從字元串中安裝正則表達式獲取值


    soup = BeautifulSoup(html, 

"html.parser"

);
    alldiv = soup.find_all(

"div"

, class_=

"content"

)   

#內容的外部div


    allnum = soup.find_all(

"span"

, class_=

"stats-vote"

)  

#點贊數量的外部span


    

for

 i 

in

 range(

0

,len(alldiv)):
        

print

 str(alldiv[i].find_all(

"span"

)[

0

]).replace(

"<span>"

,

""

).replace(

"</span>"

,

""

).replace(

"<br/>"

,

"
"

).strip()  

#內容文字,使用string在文字里還有<br/>時,無法列印,使用text會省略調用<br/>


        

print

 allnum[i].find_all(

"i"

)[

0

].string  

#好評數量

#根據一個網址,獲取該網址中符合指定正則表達式的內容


def

 

craw

(url)

:


    

try

:
        user_agent = 

"Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)"


        headers = { 

"User-Agent"

 : user_agent }  

#設置MIME頭,糗事百科對這個進行了驗證


        request = urllib2.Request(url,headers = headers)  

#創建一個請求


        response = urllib2.urlopen(request)  

#獲取響應


        html = response.read()  

#讀取返回html源碼


        getdata(html)

    

except

 urllib2.URLError, e:
        

if

 hasattr(e,

"code"

):
            

print

 e.code
        

if

 hasattr(e,

"reason"

):
            

print

 e.reason

for

 i 

in

 range(

1

,

14

):
    url = urlstr % i
    print(url)
    craw(url)




python3.6下



#coding:utf-8


#本實例用於獲取糗事百科熱門的文章內容和好評數量。


import

 urllib

from

 bs4 

import

 BeautifulSoup

#糗事百科需要設置MIME頭才能正常請求,不需要登陸,也不需要cookie


print(

"=======================糗事百科數據挖掘=========================="

)

urlstr=

"https://www.qiushibaike.com/8hr/page/%d"

data={}

def

 

getdata

(html)

:

  

#從字元串中安裝正則表達式獲取值


    soup = BeautifulSoup(html, 

"html.parser"

);
    alldiv = soup.find_all(

"div"

, class_=

"content"

)   

#內容的外部div


    allnum = soup.find_all(

"span"

, class_=

"stats-vote"

)  

#點贊數量的外部span


    

for

 i 

in

 range(

0

,len(alldiv)):
        print(str(alldiv[i].find_all(

"span"

)[

0

]).replace(

"<span>"

,

""

).replace(

"</span>"

,

""

).replace(

"<br/>"

,

"
"

).strip())  

#內容文字,使用string在文字里還有<br/>時,無法列印,使用text會省略調用<br/>


        print(allnum[i].find_all(

"i"

)[

0

].string)  

#好評數量

#根據一個網址,獲取該網址中符合指定正則表達式的內容


def

 

craw

(url)

:


    

try

:
        user_agent = 

"Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)"


        headers = { 

"User-Agent"

 : user_agent }  

#設置MIME頭,糗事百科對這個進行了驗證


        request = urllib.request.Request(url,headers = headers)  

#創建一個請求


        response = urllib.request.urlopen(request)  

#獲取響應


        html = response.read()  

#讀取返回html源碼


        getdata(html)
    

except

 urllib.error.URLError 

as

 e:
        

if

 hasattr(e,

"code"

):
            print(e.code)
        

if

 hasattr(e,

"reason"

):
            print(e.reason)

for

 i 

in

 range(

1

,

14

):
    url = urlstr % i
    print(url)
    craw(url)




 推薦↓↓↓ 






??

16個技術公眾號

】都在這裡!


涵蓋:程序員大咖、源碼共讀、程序員共讀、數據結構與演算法、黑客技術和網路安全、大數據科技、編程前端、Java、Python、Web編程開發、Android、iOS開發、Linux、資料庫研發、幽默程序員等。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python開發 的精彩文章:

奉勸大家不要再熬夜了,我有一個朋友因為熬夜
這雜技天賦滿點了!

TAG:Python開發 |