<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                前面一直強調Python運用到網絡爬蟲方面非常有效,這篇文章也是結合學習的Python視頻知識及我研究生數據挖掘方向的知識.從而簡單介紹下Python是如何爬去網絡數據的,文章知識非常簡單,但是也分享給大家,就當簡單入門吧!同時只分享知識,希望大家不要去做破壞網絡的知識或侵犯別人的原創型文章.主要包括: 1.介紹爬取CSDN自己博客文章的簡單思想及過程 2.實現Python源碼爬取新浪韓寒博客的316篇文章 ## 一.爬蟲的簡單思想 最近看劉兵的《Web數據挖掘》知道,在研究信息抽取問題時主要采用的是三種方法: 1.手工方法:通過觀察網頁及源碼找出模式,再編寫程序抽取目標數據.但該方法無法處理站點數量巨大情形. 2.包裝器歸納:它英文名稱叫WrapperInduction,即有監督學習方法,是半自動的.該方法從手工標注的網頁或數據記錄集中學習一組抽取規則,從而抽取具有類似格式的網頁數據. 3.自動抽取:它是無監督方法,給定一張或數張網頁,自動從中尋找模式或語法實現數據抽取,由于不需要手工標注,故可以處理大量站點和網頁的數據抽取工作. 這里使用的Python網絡爬蟲就是簡單的數據抽取程序,后面我也將陸續研究一些Python+數據挖掘的知識并寫這類文章.首先我想獲取的是自己的所有CSDN的博客(靜態.html文件),具體的思想及實現方式如下: 第一步 分析csdn博客的源碼 首先需要實現的是通過分析博客源碼獲取一篇csdn的文章,在使用IE瀏覽器按F12或Google Chrome瀏覽器右鍵"審查元素"可以分析博客的基本信息.在網頁中[http://blog.csdn.net/eastmount](http://blog.csdn.net/eastmount)鏈接了作者所有的博文. 顯示的源碼格式如下: ![](https://box.kancloud.cn/2016-02-23_56cc2eb23d92c.jpg) 其中<diw class="list_item article_item">..</div>表示顯示的每一篇博客文章,其中第一篇顯示如下: ![](https://box.kancloud.cn/2016-02-23_56cc2eb25600b.jpg) 它的具體html源代碼如下: ![](https://box.kancloud.cn/2016-02-23_56cc2eb26a4e0.jpg) 所以我們只需要獲取每頁中博客<div class="article_title">中的鏈接<a href="/eastmount/article/details/39599061">,并增加[http://blog.csdn.net](http://blog.csdn.net)即可.在通過代碼: ~~~ import urllib content = urllib.urlopen("http://blog.csdn.net/eastmount/article/details/39599061").read() open('test.html','w+').write(content) ~~~ 但是CSDN會禁止這樣的行為,服務器禁止爬取站點內容到別人的網上去.我們的博客文章經常被其他網站爬取,但并沒有申明原創出處,還請尊重原創.它顯示的錯誤"403 Forbidden". PS:據說模擬正常上網能實現爬取CSDN內容,讀者可以自己去研究,作者此處不介紹.參考(已驗證): [**http://www.yihaomen.com/article/python/210.htm**](http://www.yihaomen.com/article/python/210.htm) [http://www.2cto.com/kf/201405/304829.html](http://www.2cto.com/kf/201405/304829.html) 第二步 獲取自己所有的文章 這里只討論思想,假設我們第一篇文章已經獲取成功.下面使用Python的find()從上一個獲取成功的位置繼續查找下一篇文章鏈接,即可實現獲取第一頁的所有文章.它一頁顯示的是20篇文章,最后一頁顯示剩下的文章. 那么如何獲取其他頁的文章呢? ![](https://box.kancloud.cn/2016-02-23_56cc2eb285d59.jpg) 我們可以發現當跳轉到不同頁時顯示的超鏈接為: ~~~ 第1頁 http://blog.csdn.net/Eastmount/article/list/1 第2頁 http://blog.csdn.net/Eastmount/article/list/2 第3頁 http://blog.csdn.net/Eastmount/article/list/3 第4頁 http://blog.csdn.net/Eastmount/article/list/4 ~~~ 這思想就非常簡單了,其過程簡單如下: ~~~ ?????? for(int i=0;i<4;i++)??????????????? //獲取所有頁文章 ?????????????? for(int j=0;j<20;j++)????? //獲取一頁文章 注意最后一頁文章篇數 ???????????????????????GetContent();?????? //獲取一篇文章?主要是獲取超鏈接 ~~~ 同時學習過通過正則表達式,在獲取網頁內容圖片過程中格外方便.如我前面使用C#和正則表達式獲取圖片的文章:[http://blog.csdn.net/eastmount/article/details/12235521](http://blog.csdn.net/eastmount/article/details/12235521) ## 二.爬取新浪博客 上面介紹了爬蟲的簡單思想,但是由于一些網站服務器禁止獲取站點內容,但是新浪一些博客還能實現.這里參照"51CTO學院 智普教育的python視頻"獲取新浪韓寒的所有博客. 地址為:[http://blog.sina.com.cn/s/articlelist_1191258123_0_1.html](http://blog.sina.com.cn/s/articlelist_1191258123_0_1.html) 采用同上面一樣的方式我們可以獲取每個<div class="articleCell SG_j_linedot1">..</div>中包含著一篇文章的超鏈接,如下圖所示: ![](https://box.kancloud.cn/2016-02-23_56cc2eb29f484.jpg) 此時通過Python獲取一篇文章的代碼如下: ~~~ import urllib content = urllib.urlopen("http://blog.sina.com.cn/s/blog_4701280b0102eo83.html").read() open('blog.html','w+').write(content) ~~~ 可以顯示獲取的文章,現在需要獲取一篇文章的超鏈接,即: <a title="《論電影的七個元素》——關于我對電影的一些看法以及《后會無期》的一些消息" target="_blank" href="**[**http://blog.sina.com.cn/s/blog_4701280b0102eo83.html**](http://blog.sina.com.cn/s/blog_4701280b0102eo83.html)**">《論電影的七個元素》——關于我對電…</a> 在沒有講述正則表達式之前使用Python人工獲取超鏈接http,從文章開頭查找第一個"<a title",然后接著找到"href="和".html"即可獲取"[http://blog.sina.com.cn/s/blog_4701280b0102eo83.html](http://blog.sina.com.cn/s/blog_4701280b0102eo83.html)".代碼如下: ~~~ #<a title=".." target="_blank" href="http://blog.sina...html">..</a> #coding:utf-8 con = urllib.urlopen("http://blog.sina.com.cn/s/articlelist_1191258123_0_1.html").read() title = con.find(r'<a title=') href = con.find(r'href=',title) #從title位置開始搜索 html = con.find(r'.html',href) #從href位置開始搜素最近html url = con[href+6:html+5] #href="共6位 .html共5位 print 'url:',url #輸出 url: http://blog.sina.com.cn/s/blog_4701280b0102eohi.html ~~~ 下面按照前面講述的思想通過兩層循環即可實現獲取所有文章,具體代碼如下: ~~~ #coding:utf-8 import urllib import time page=1 while page<=7: url=['']*50 #新浪播客每頁顯示50篇 temp='http://blog.sina.com.cn/s/articlelist_1191258123_0_'+str(page)+'.html' con =urllib.urlopen(temp).read() #初始化 i=0 title=con.find(r'<a title=') href=con.find(r'href=',title) html = con.find(r'.html',href) #循環顯示文章 while title!=-1 and href!=-1 and html!=-1 and i<50: url[i]=con[href+6:html+5] print url[i] #顯示文章URL #下面的從第一篇結束位置開始查找 title=con.find(r'<a title=',html) href=con.find(r'href=',title) html = con.find(r'.html',href) i=i+1 else: print 'end page=',page #下載獲取文章 j=0 while(j<i): #前面6頁為50篇 最后一頁為i篇 content=urllib.urlopen(url[j]).read() open(r'hanhan/'+url[j][-26:],'w+').write(content) #寫方式打開 +表示沒有即創建 j=j+1 time.sleep(1) else: print 'download' page=page+1 else: print 'all find end' ~~~ 這樣我們就把韓寒的316篇新浪博客文章全部爬取成功并能顯示每一篇文章,顯示如下: ![](https://box.kancloud.cn/2016-02-23_56cc2eb2bad3d.jpg) 這篇文章主要是簡單的介紹了如何使用Python實現爬取網絡數據,后面我還將學習一些智能的數據挖掘知識和Python的運用,實現更高效的爬取及獲取客戶意圖和興趣方面的知識.想實現智能的爬取圖片和小說兩個軟件. 該文章僅提供思想,希望大家尊重別人的原創成果,不要隨意爬取別人的文章并沒有含原創作者信息的轉載!最后希望文章對大家有所幫助,初學Python,如果有錯誤或不足之處,請海涵! (By:Eastmount 2014-10-4 中午11點?原創CSDN?[http://blog.csdn.net/eastmount/](http://blog.csdn.net/eastmount/)) 參考資料: 1.51CTO學院 智普教育的python視頻**[**http://edu.51cto.com/course/course_id-581.html**](http://edu.51cto.com/course/course_id-581.html) 2.《Web數據挖掘》劉兵著
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看