<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ? ? ? ?爬蟲實際上就是通過代碼實現“自動”登陸,并且能夠自動完成一些數據的下載,一般網站都會對一些允許抓取的數據進行規定,具體的規定內容寫在了每個網站的robots文件中。 ??????? 爬蟲是數據挖掘和分析的第一部,及:獲取數據,因而對于從事數據分析的人來說,首先應該“了解”。也就是說,對于想要從事數據挖掘的人來說,并不要求你爬蟲的技術非常高超,只要能夠知道里面的基本技術層面即可。個人認為,數據挖掘的要旨并非在于數據(盡管很多數據界的名人都似乎推崇“大數據”),而是在于對于數據后面事件的理解...... ??????? 言歸正傳: ? ? ? ? 爬蟲的基本框架是:模擬登陸——獲取數據——存儲數據,當然,每一個步驟中都涉及很多需要注意的地方,如在模擬登陸中,要考慮request的方式和數據內容(這里要了解一些http的基礎知識[w3school](http://www.w3school.com.cn/) 可以經常去看看,如用到xpath的時候),還要驗證碼以及密碼加密(如新浪和拉鉤網)。 ??????? 模擬登陸之前,還要掌握一些httpclient/firebug這些軟件的基本操作,以及具備看懂request/post數據的“技能”,這些“攔截”軟件能夠在client(瀏覽器)和server互動時“截獲”雙方信息。ps:所以登陸公共場所的wifi極其危險。 #### 1 靜態網站+密碼可見 ??????? 這種情況下,server要求不高,既沒有動態碼,也沒有驗證碼,更沒有加密,因而這類網站的模擬登陸一般非常好實現,只要python中的一些基本操作即可: * * * import urllib import urllib2 url=r"http://www.xxxx.com" # 加入“r“的目的是為了避免一些轉義字符額識別問題,個人編習慣 request=urllib2.Request(url) rep=urllib2.urlopen(request) #此時的rep為instance,可以理解為類似于“文件”的東西 * * * ??????? 到這里已經將server返回的html文檔記錄在了rep中,后面就可以對rep進行讀寫操作 ??????? 這里一定要注意網站的編碼是什么,一般在“查看網站源碼”中,可以看得到有一個為character=“utf-8”的內容,就表示網站html編碼為utf-8,那么用python時,就必須對html進行decode(以utf-8編碼方式轉化為unicode),然后再進行其他處理,如正則表達式查找等。 content=rep.read().decode("utf-8") with open(r"yourfile.txt","w") as f: #將rep中的html文檔以uft-8的形式進行編碼后存儲 ??????? f.write(content.encode("utf-8")) ??????????? 好了,這就是一般網頁的模擬登陸 ???? * * * #### 2 網站拒絕“機器”登陸 ??????? 一般來說,除了像學校網站以及學校bbs這類的網站,其他網站都會對“機器”登陸比較反感,畢竟,那么此時,就需要在以上的基礎上模擬瀏覽器登陸。 ??????? 瀏覽器登陸的時候會發送一些我們看不到的內容,想要模擬瀏覽器登陸,就必須將瀏覽器發送的內容以post的形式發送給server端。瀏覽器一般post的內容見下: * * * ![](https://box.kancloud.cn/2016-05-29_574a961ced0e7.jpg) 具體參數的意思,如果忘了可以再google一下(查問題一定要用google) ????? 這里要注意的一個定方是accept-encoding那里是:gzip和defualt,也就是說server會以壓縮包的形式法給你html文檔(有的時候也不是,這個還是具體實驗),那么如果是以gzip的形式返回html,那么就一定要“解壓”,否則會寶HTTPError 500,這個異常出來,一般很難發現。具體解壓方法后面介紹。 ????? 在模擬瀏覽器登陸的過程中,也沒有必要全部按照post的形式發送,可以只發送一些User-Agent或者referer的東西。發送user-agent是因為有些server要通過這個參數來判斷是否是瀏覽器,發送referer是由于“反盜鏈”的原因,大概意思就是防止本網站的鏈接內容被其他“二道販子”用來“倒賣”。 那么,在上面代碼的基礎上,這里可以加入: headers={"User-Agent":"xxx","Referer":"xxx"} request改為: request=urllib2.Request(url,headers=headers)#在發送請求的時候加入header 這里附上urllib2的中文教程:[urllib2 tutorial](http://uliweb.clkg.org/tutorial/view_chapter/172) ? PS:如果可以用Request庫的還是用它吧? [request tutorial?](http://docs.python-requests.org/en/latest/user/quickstart/)
                  <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>

                              哎呀哎呀视频在线观看