• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
    當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

    python3制作捧腹網(wǎng)段子頁(yè)爬蟲

    來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 14:16:44
    文檔

    python3制作捧腹網(wǎng)段子頁(yè)爬蟲

    python3制作捧腹網(wǎng)段子頁(yè)爬蟲:網(wǎng)上的Python教程大都是2.X版本的,python2.X和python3.X相比較改動(dòng)比較大,好多庫(kù)的用法不太一樣,我安裝的是python3.X,我們來(lái)看看詳細(xì)的例子0x01春節(jié)閑著沒(méi)事(是有多閑),就寫了個(gè)簡(jiǎn)單的程序,來(lái)爬點(diǎn)笑話看,順帶記錄下寫程序的過(guò)程。第一次接觸爬蟲是看了
    推薦度:
    導(dǎo)讀python3制作捧腹網(wǎng)段子頁(yè)爬蟲:網(wǎng)上的Python教程大都是2.X版本的,python2.X和python3.X相比較改動(dòng)比較大,好多庫(kù)的用法不太一樣,我安裝的是python3.X,我們來(lái)看看詳細(xì)的例子0x01春節(jié)閑著沒(méi)事(是有多閑),就寫了個(gè)簡(jiǎn)單的程序,來(lái)爬點(diǎn)笑話看,順帶記錄下寫程序的過(guò)程。第一次接觸爬蟲是看了
    網(wǎng)上的Python教程大都是2.X版本的,python2.X和python3.X相比較改動(dòng)比較大,好多庫(kù)的用法不太一樣,我安裝的是python3.X,我們來(lái)看看詳細(xì)的例子

    0x01

    春節(jié)閑著沒(méi)事(是有多閑),就寫了個(gè)簡(jiǎn)單的程序,來(lái)爬點(diǎn)笑話看,順帶記錄下寫程序的過(guò)程。第一次接觸爬蟲是看了這么一個(gè)帖子,一個(gè)逗逼,爬取煎蛋網(wǎng)上妹子的照片,簡(jiǎn)直不要太方便。于是乎就自己照貓畫虎,抓了點(diǎn)圖片。

    科技啟迪未來(lái),身為一個(gè)程序員,怎么能干這種事呢,還是爬點(diǎn)笑話比較有益于身心健康。

    python3制作捧腹網(wǎng)段子頁(yè)爬蟲、

    0x02

    在我們擼起袖子開始搞之前,先來(lái)普及點(diǎn)理論知識(shí)。

    簡(jiǎn)單地說(shuō),我們要把網(wǎng)頁(yè)上特定位置的內(nèi)容,扒拉下來(lái),具體怎么扒拉,我們得先分析這個(gè)網(wǎng)頁(yè),看那塊內(nèi)容是我們需要的。比如,這次爬取的是捧腹網(wǎng)上的笑話,打開 捧腹網(wǎng)段子頁(yè)我們可以看到一大堆笑話,我們的目的就是獲取這些內(nèi)容。看完回來(lái)冷靜一下,你這樣一直笑,我們沒(méi)辦法寫代碼。在 chrome 中,我們打開 審查元素 然后一級(jí)一級(jí)的展開 HTML 標(biāo)簽,或者點(diǎn)擊那個(gè)小鼠標(biāo),定位我們所需要的元素。

    python3制作捧腹網(wǎng)段子頁(yè)爬蟲、

    最后可以發(fā)現(xiàn) <p> 中的內(nèi)容就是我們所需要的笑話,在看第二條笑話,也是這樣。于是乎,我們就可以把這個(gè)網(wǎng)頁(yè)中所有的 <p> 找到,然后把里邊的內(nèi)容提取出來(lái),就完成了。

    0x03

    好了,現(xiàn)在我們知道我們的目的了,就可以擼起袖子開始干了。這里我用的 python3,關(guān)于 python2 和 python3 的選用,大家可以自行決定,功能都可以實(shí)現(xiàn),只是有些許不同。但還是建議用 python3。
    我們要扒拉下我們需要的內(nèi)容,首先我們得把這個(gè)網(wǎng)頁(yè)扒拉下來(lái),怎么扒拉呢,這里我們要用到一個(gè)庫(kù),叫 urllib,我們用這個(gè)庫(kù)提供的方法,來(lái)獲取整個(gè)網(wǎng)頁(yè)。
    首先,我們導(dǎo)入 urllib

    代碼如下:

    import urllib.request as request

    然后,我們就可以使用 request 來(lái)獲取網(wǎng)頁(yè)了,

    代碼如下:

    def getHTML(url):
    return request.urlopen(url).read()

    人生苦短,我用 python,一行代碼,下載網(wǎng)頁(yè),你說(shuō),還有什么理由不用 python。
    下載完網(wǎng)頁(yè)后,我們就得解析這個(gè)網(wǎng)頁(yè)了來(lái)獲取我們所需要的元素。為了解析元素,我們需要使用另外一個(gè)工具,叫做 Beautiful Soup,使用它,可以快速解析 HTML 和 XML并獲取我們所需要的元素。

    代碼如下:

    soup = BeautifulSoup(getHTML("http://www.pengfu.com/xiaohua_1.html"))

    用 BeautifulSoup 來(lái)解析網(wǎng)頁(yè)也就一句話,但當(dāng)你運(yùn)行代碼的時(shí)候,會(huì)出現(xiàn)這么一個(gè)警告,提示要指定一個(gè)解析器,不然,可能會(huì)在其他平臺(tái)或者系統(tǒng)上報(bào)錯(cuò)。

    代碼如下:

    /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/bs4/__init__.py:181: UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("lxml"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.

    The code that caused this warning is on line 64 of the file joke.py. To get rid of this warning, change code that looks like this:

    BeautifulSoup([your markup])

    to this:

    BeautifulSoup([your markup], "lxml")

    markup_type=markup_type))

    解析器的種類 和 不同解析器之間的區(qū)別 官方文檔有詳細(xì)的說(shuō)明,目前來(lái)說(shuō),還是用 lxml 解析比較靠譜。
    修改之后

    代碼如下:

    soup = BeautifulSoup(getHTML("http://www.pengfu.com/xiaohua_1.html", 'lxml'))

    這樣,就沒(méi)有上述警告了。

    代碼如下:

    p_array = soup.find_all('p', {'class':"content-img clearfix pt10 relative"})

    利用 find_all 函數(shù),來(lái)找到所有 class = content-img clearfix pt10 relative 的 p 標(biāo)簽 然后遍歷這個(gè)數(shù)組

    代碼如下:

    for x in p_array: content = x.string

    這樣,我們就取到了目的 p 的內(nèi)容。至此,我們已經(jīng)達(dá)到了我們的目的,爬到了我們的笑話。
    但當(dāng)以同樣的方式去爬取糗百的時(shí)候,會(huì)報(bào)這樣一個(gè)錯(cuò)誤

    代碼如下:

    raise RemoteDisconnected("Remote end closed connection without" http.client.RemoteDisconnected: Remote end closed connection without response

    說(shuō)遠(yuǎn)端無(wú)響應(yīng),關(guān)閉了鏈接,看了下網(wǎng)絡(luò)也沒(méi)有問(wèn)題,這是什么情況導(dǎo)致的呢?莫非是我姿勢(shì)不對(duì)?
    打開 charles 抓包,果然也沒(méi)反應(yīng)。唉,這就奇怪了,好好的一個(gè)網(wǎng)站,怎么瀏覽器可以訪問(wèn),python 無(wú)法訪問(wèn)呢,是不是 UA 的問(wèn)題呢?看了下 charles,發(fā)現(xiàn),利用 urllib 發(fā)起的請(qǐng)求,UA 默認(rèn)是 Python-urllib/3.5 而在 chrome 中訪問(wèn) UA 則是 User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36,那會(huì)不會(huì)是因?yàn)榉?wù)器根據(jù) UA 來(lái)判斷拒絕了 python 爬蟲。我們來(lái)偽裝下試試看行不行

    代碼如下:

    def getHTML(url):
    headers = {'User-Agent': 'User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
    req = request.Request(url, headers=headers)
    return request.urlopen(req).read()

    這樣就把 python 偽裝成 chrome 去獲取糗百的網(wǎng)頁(yè),可以順利的得到數(shù)據(jù)。

    至此,利用 python 爬取糗百和捧腹網(wǎng)的笑話已經(jīng)結(jié)束,我們只需要分析相應(yīng)的網(wǎng)頁(yè),找到我們感興趣的元素,利用 python 強(qiáng)大的功能,就可以達(dá)到我們的目的,不管是 XXOO 的圖,還是內(nèi)涵段子,都可以一鍵搞定,不說(shuō)了,我去找點(diǎn)妹子圖看看。

    # -*- coding: utf-8 -*-
    import sys
    import urllib.request as request
    from bs4 import BeautifulSoup
    
    def getHTML(url):
     headers = {'User-Agent': 'User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
     req = request.Request(url, headers=headers)
     return request.urlopen(req).read()
    
    def get_pengfu_results(url):
     soup = BeautifulSoup(getHTML(url), 'lxml')
     return soup.find_all('p', {'class':"content-img clearfix pt10 relative"})
    
    def get_pengfu_joke():
     for x in range(1, 2):
     url = 'http://www.pengfu.com/xiaohua_%d.html' % x
     for x in get_pengfu_results(url):
     content = x.string
     try:
     string = content.lstrip()
     print(string + '
    
    ')
     except:
     continue
     return
    
    def get_qiubai_results(url):
     soup = BeautifulSoup(getHTML(url), 'lxml')
     contents = soup.find_all('p', {'class':'content'})
     restlus = []
     for x in contents:
     str = x.find('span').getText('
    ','<br/>')
     restlus.append(str)
     return restlus
    
    def get_qiubai_joke():
     for x in range(1, 2):
     url = 'http://www.qiushibaike.com/8hr/page/%d/?s=4952526' % x
     for x in get_qiubai_results(url):
     print(x + '
    
    ')
     return
    
    if __name__ == '__main__':
     get_pengfu_joke()
     get_qiubai_joke()

    更多python3制作捧腹網(wǎng)段子頁(yè)爬蟲、相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

    聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    python3制作捧腹網(wǎng)段子頁(yè)爬蟲

    python3制作捧腹網(wǎng)段子頁(yè)爬蟲:網(wǎng)上的Python教程大都是2.X版本的,python2.X和python3.X相比較改動(dòng)比較大,好多庫(kù)的用法不太一樣,我安裝的是python3.X,我們來(lái)看看詳細(xì)的例子0x01春節(jié)閑著沒(méi)事(是有多閑),就寫了個(gè)簡(jiǎn)單的程序,來(lái)爬點(diǎn)笑話看,順帶記錄下寫程序的過(guò)程。第一次接觸爬蟲是看了
    推薦度:
    標(biāo)簽: 段子 python 爬蟲
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 久久无码人妻精品一区二区三区| 日本精品视频在线观看| 精品多毛少妇人妻AV免费久久| 亚洲av无码精品网站| 成人国产精品日本在线观看 | 成人国产精品日本在线观看 | 人人妻人人澡人人爽人人精品电影| 国产人成精品综合欧美成人 | 992tv精品视频tv在线观看| 亚洲欧美激情精品一区二区| 久久精品国产WWW456C0M| 91精品国产福利在线观看| jiucao在线观看精品| 久久99精品久久久久久久不卡| 四虎精品成人免费视频| 精品成人av一区二区三区| 国产精品无码v在线观看| 日本一区二区三区精品中文字幕| 国产精品ⅴ无码大片在线看| 日韩人妻精品无码一区二区三区| 亚洲欧美精品丝袜一区二区| 欧美成人精品第一区二区| 国产欧美精品一区二区色综合| 99久久综合国产精品二区| 日韩精品一区二区三区四区 | 久久久久国产日韩精品网站| 国内精品国产成人国产三级| 国产精品亚洲二区在线观看| 国产精品美女网站| 国产精品玖玖美女张开腿让男人桶爽免费看| 国产精品分类视频分类一区| 99精品久久精品| 中文字幕在线亚洲精品| 国产精品岛国久久久久| 成人国产精品一区二区网站| 囯产精品一品二区三区| 国产精品人人爽人人做我的可爱 | 国产福利精品视频自拍| 国产精品V亚洲精品V日韩精品 | 国产精品涩涩涩视频网站| 国内精品久久久久伊人av|