<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

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

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 14:16:44
        文檔

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

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

        0x01

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

        科技啟迪未來,身為一個程序員,怎么能干這種事呢,還是爬點笑話比較有益于身心健康。

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

        0x02

        在我們擼起袖子開始搞之前,先來普及點理論知識。

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

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

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

        0x03

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

        代碼如下:

        import urllib.request as request

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

        代碼如下:

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

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

        代碼如下:

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

        用 BeautifulSoup 來解析網(wǎng)頁也就一句話,但當你運行代碼的時候,會出現(xiàn)這么一個警告,提示要指定一個解析器,不然,可能會在其他平臺或者系統(tǒng)上報錯。

        代碼如下:

        /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ū)別 官方文檔有詳細的說明,目前來說,還是用 lxml 解析比較靠譜。
        修改之后

        代碼如下:

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

        這樣,就沒有上述警告了。

        代碼如下:

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

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

        代碼如下:

        for x in p_array: content = x.string

        這樣,我們就取到了目的 p 的內(nèi)容。至此,我們已經(jīng)達到了我們的目的,爬到了我們的笑話。
        但當以同樣的方式去爬取糗百的時候,會報這樣一個錯誤

        代碼如下:

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

        說遠端無響應,關閉了鏈接,看了下網(wǎng)絡也沒有問題,這是什么情況導致的呢?莫非是我姿勢不對?
        打開 charles 抓包,果然也沒反應。唉,這就奇怪了,好好的一個網(wǎng)站,怎么瀏覽器可以訪問,python 無法訪問呢,是不是 UA 的問題呢?看了下 charles,發(fā)現(xiàn),利用 urllib 發(fā)起的請求,UA 默認是 Python-urllib/3.5 而在 chrome 中訪問 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,那會不會是因為服務器根據(jù) UA 來判斷拒絕了 python 爬蟲。我們來偽裝下試試看行不行

        代碼如下:

        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)頁,可以順利的得到數(shù)據(jù)。

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

        # -*- 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)段子頁爬蟲、相關文章請關注PHP中文網(wǎng)!

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

        文檔

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

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

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲AV无码精品蜜桃| 亚洲欧洲精品无码AV| 无遮免费网站在线入口| 国产a视频精品免费观看| 免费人成视频在线| 亚洲国产成人精品女人久久久| 中文亚洲AV片不卡在线观看| 亚洲色图黄色小说| 亚洲国产成人久久一区二区三区 | 91精品全国免费观看含羞草| 在线精品免费视频无码的| 亚洲av无码国产精品色在线看不卡 | 69xx免费观看视频| 国产精品亚洲精品青青青| 中文字幕免费视频精品一| 久久久久av无码免费网| 亚洲自国产拍揄拍| 在线观看免费亚洲| 噜噜噜亚洲色成人网站∨| 亚洲一级免费视频| 亚洲欧美国产日韩av野草社区| 成全视频高清免费观看电视剧 | 国产亚洲精品精品精品| 免费无码作爱视频| 亚洲欧洲日产国码二区首页| 十八禁在线观看视频播放免费| 亚洲av福利无码无一区二区| 亚洲日本一线产区和二线产区对比| 日本免费中文字幕在线看| 九九热久久免费视频| 国产精品99久久免费| 亚洲国产av美女网站| 久久午夜夜伦鲁鲁片免费无码 | 亚洲一区二区三区深夜天堂| 成人免费无码精品国产电影| aa级女人大片喷水视频免费| 亚洲国产另类久久久精品| 老司机福利在线免费观看| 德国女人一级毛片免费| 亚洲阿v天堂在线2017免费| 国产无遮挡吃胸膜奶免费看视频|