最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)爬取知乎神回復(fù)簡(jiǎn)單爬蟲代碼分享

 更新時(shí)間:2015年01月04日 08:56:35   投稿:junjie  
這篇文章主要介紹了Python實(shí)現(xiàn)爬取知乎神回復(fù)簡(jiǎn)單爬蟲代碼分享,本文實(shí)現(xiàn)了爬取知乎的“如何正確地吐槽”收藏夾,是對(duì)個(gè)人的一個(gè)興趣實(shí)現(xiàn),需要的朋友可以參考下

看知乎的時(shí)候發(fā)現(xiàn)了一個(gè) “如何正確地吐槽” 收藏夾,里面的一些神回復(fù)實(shí)在很搞笑,但是一頁(yè)一頁(yè)地看又有點(diǎn)麻煩,而且每次都要打開網(wǎng)頁(yè),于是想如果全部爬下來到一個(gè)文件里面,是不是看起來很爽,并且隨時(shí)可以看到全部的,于是就開始動(dòng)手了。

工具

1.Python 2.7
2.BeautifulSoup

分析網(wǎng)頁(yè)

我們先來看看知乎上該網(wǎng)頁(yè)的情況

網(wǎng)址:,容易看到,網(wǎng)址是有規(guī)律的,page慢慢遞增,這樣就能夠?qū)崿F(xiàn)全部爬取了。

再來看一下我們要爬取的內(nèi)容:

我們要爬取兩個(gè)內(nèi)容:?jiǎn)栴}和回答,回答僅限于顯示了全部?jī)?nèi)容的回答,如下面這種就不能爬取,因?yàn)楹孟駸o法展開(反正我不會(huì)。。),再說答案不全的話爬來也沒用,所以就不爬答案不全的了吧。

好,那么下面我們要找到他們?cè)诰W(wǎng)頁(yè)源代碼中的位置:

即我們找到問題的內(nèi)容包含在<h2 class = "zm-item-title"><a tar...>中,那么我們等會(huì)就可以在這個(gè)標(biāo)簽里面找問題。

然后是回復(fù):

有兩個(gè)地方都有回復(fù)的內(nèi)容,因?yàn)樯厦婺莻€(gè)的內(nèi)容還包括了<span..>等一些內(nèi)容,不方便處理,我們爬下面那個(gè)的內(nèi)容,因?yàn)槟莻€(gè)里面的內(nèi)容純正無污染。

代碼

好,這時(shí)候我們?cè)囍鴮懗鰌ython代碼:

復(fù)制代碼 代碼如下:

# -*- coding: cp936 -*-
import urllib2
from BeautifulSoup import BeautifulSoup

f = open('howtoTucao.txt','w')     #打開文件

for pagenum in range(1,21):        #從第1頁(yè)爬到第20頁(yè)

    strpagenum = str(pagenum)      #頁(yè)數(shù)的str表示
    print "Getting data for Page " + strpagenum   #shell里面顯示的,表示已爬到多少頁(yè)
    url = "  #網(wǎng)址
    page = urllib2.urlopen(url)     #打開網(wǎng)頁(yè)
    soup = BeautifulSoup(page)      #用BeautifulSoup解析網(wǎng)頁(yè)
   
    #找到具有class屬性為下面兩個(gè)的所有Tag
    ALL = soup.findAll(attrs = {'class' : ['zm-item-title','zh-summary summary clearfix'] })

    for each in ALL :               #枚舉所有的問題和回答
        #print type(each.string)
        #print each.name
        if each.name == 'h2' :      #如果Tag為h2類型,說明是問題
            print each.a.string     #問題中還有一個(gè)<a..>,所以要each.a.string取出內(nèi)容
            if each.a.string:       #如果非空,才能寫入
                f.write(each.a.string)
            else :                  #否則寫"No Answer"
                f.write("No Answer")
        else :                      #如果是回答,同樣寫入
            print each.string
            if each.string:
                f.write(each.string)
            else :
                f.write("No Answer")
f.close()                           #關(guān)閉文件

代碼雖然不常,可是寫了我半天,開始各種出問題。

運(yùn)行

然后我們運(yùn)行就可以爬了:

結(jié)果

等運(yùn)行完畢,我們打開文件howtoTucao.txt,可以看到,這樣就爬取成功了。只是格式可能還是有點(diǎn)問題,原來是我No Answer沒加換行,所以No Answer還會(huì)混到文本里面去,加兩個(gè)換行就可以了。

相關(guān)文章

  • Python2和Python3的共存和切換使用

    Python2和Python3的共存和切換使用

    這篇文章主要介紹了Python2和Python3的共存和切換使用,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • python進(jìn)階之自定義可迭代的類

    python進(jìn)階之自定義可迭代的類

    這篇文章主要為大家詳細(xì)介紹了python進(jìn)階之自定義可迭代的類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • python批量翻譯excel表格中的英文

    python批量翻譯excel表格中的英文

    本文主要介紹了python批量翻譯excel表格中的英文,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 四個(gè)Python常用OCR庫(kù)的用法詳解

    四個(gè)Python常用OCR庫(kù)的用法詳解

    在接口自動(dòng)化工作中,經(jīng)常需要處理文字識(shí)別的任務(wù),而OCR庫(kù)能夠幫助我們將圖像中的文字提取出來,所以本文為大家整理了四個(gè)常用的OCR庫(kù)以及它們的用法,需要的可以參考下
    2023-09-09
  • 詳解如何在PyQt5中實(shí)現(xiàn)平滑滾動(dòng)的QScrollArea

    詳解如何在PyQt5中實(shí)現(xiàn)平滑滾動(dòng)的QScrollArea

    Qt 自帶的 QScrollArea 滾動(dòng)時(shí)只能在兩個(gè)像素節(jié)點(diǎn)之間跳變,看起來很突兀。所以本文將通過定時(shí)器,重寫 wheelEvent() 來實(shí)現(xiàn)平滑滾動(dòng),需要的可以參考一下
    2023-01-01
  • python實(shí)戰(zhàn)之德州撲克第二步-判斷牌型

    python實(shí)戰(zhàn)之德州撲克第二步-判斷牌型

    這篇文章主要介紹了python實(shí)戰(zhàn)之德州撲克第二步-判斷牌型,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • python協(xié)程之動(dòng)態(tài)添加任務(wù)的方法

    python協(xié)程之動(dòng)態(tài)添加任務(wù)的方法

    今天小編就為大家分享一篇python協(xié)程之動(dòng)態(tài)添加任務(wù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python os模塊常用方法和屬性總結(jié)

    Python os模塊常用方法和屬性總結(jié)

    這篇文章主要介紹了Python os模塊常用方法和屬性總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python面向?qū)ο蠡A(chǔ)入門之編碼細(xì)節(jié)與注意事項(xiàng)

    Python面向?qū)ο蠡A(chǔ)入門之編碼細(xì)節(jié)與注意事項(xiàng)

    這篇文章主要給大家介紹了關(guān)于Python面向?qū)ο蠡A(chǔ)入門之編碼細(xì)節(jié)與注意事項(xiàng)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • python selenium 獲取接口數(shù)據(jù)的實(shí)現(xiàn)

    python selenium 獲取接口數(shù)據(jù)的實(shí)現(xiàn)

    這篇文章主要介紹了python selenium 獲取接口數(shù)據(jù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評(píng)論

鄂托克前旗| 托克逊县| 琼结县| 泰顺县| 鄂温| 弋阳县| 齐河县| 宿州市| 太康县| 柳林县| 彭山县| 磐石市| 綦江县| 龙岩市| 大港区| 射阳县| 汕尾市| 类乌齐县| 通河县| 兴安县| 桑日县| 禄劝| 北川| 徐水县| 托克逊县| 奉化市| 客服| 宕昌县| 乌什县| 日喀则市| 聂荣县| 新野县| 福州市| 买车| 尼勒克县| 丰原市| 乐业县| 嫩江县| 大关县| 烟台市| 扬中市|