腳本網站知乎
『壹』 油猴怎麼用
直接在應用商店內下載油猴,打開Chrome瀏覽器擴展程序頁面,拖拽到頁面即可完成安裝。打開油猴設置初學者或高級配置模式。打開網站點擊地址欄右側的油猴圖標可以看到已經成功啟用。
是Mozilla Firefox的一個附加組件。它讓用戶安裝一些腳本使大部分HTML為主的網頁於用戶端直接改變得更方便易用。隨著Greasemonkey腳本常駐於瀏覽器,每次隨著目的網頁打開而自動做修改,使得運行腳本的用戶印象深刻地享受其固定便利性。
Greasemonkey可替網頁加入些新功能、修正網頁錯誤、組合來自不同網頁的數據、或者數繁不及備載的其他功能。寫得好的Greasemonkey腳本甚至可讓其輸出與被修改的頁面集成得天衣無縫,像是原本網頁里的一部分。
相關信息
大部分Greasemonkey使用者腳本都是自行撰寫,使用對某網站專用的JavaScript代碼,透過文檔對象模型(DOM)介面對網頁內容做操作。維護了個 Greasemonkey 資料庫。該資料庫描述哪個網址網頁對應到哪個腳本。
當使用者載入匹配的網頁,Greasemonkey便呼叫相關的腳本,而該腳本便為該頁加入輸出結果、刪除該頁的部分、或者移動礙眼的部分。Greasemonkey腳本亦能透過非網域綁定的XMLHTTP要求來查詢外部HTTP資源。
『貳』 學python可以做什麼
1WEB開發
在國內,豆瓣一開始就使用Python作為web開發基礎語言,知乎的整個架構也是基於Python語言,這使得web開發這塊在國內發展的很不錯。
盡管目前Python並不是做Web開發的首選,但一直都佔有不可忽視的一席。Python中有各類Web框架,無論是簡單而可以自由搭配的微框架還是全功能的大型MVC框架都一應俱全,這在需要敏捷開發的Web項目中也是十分具有優勢的。廣泛使用(或曾經廣泛使用)Python提供的大型Web服務包括知乎、豆瓣、Dropbox等網站。加之Python本身的「膠水」特性,很容易實現在需要大規模性能級計算時整合其它語言,同時保留Web開發時的輕便快捷。
除此之外,Python中還有大量「開箱即用」的模塊,用於與各種其它網站的對接等相關功能。如果希望開發個微信公眾號相關功能,wechat-sdk/weixin-python等包,能夠使你幾乎完全不用管文檔中提及的各種伺服器交互細節,專注於功能實現即能完成開發。
目前,國內的Python web開發主要有兩個技術棧:
(1)Django
Django是一個高級的敏捷web開發框架,如果學會了,擼一個網站很快。當然如果純粹比擼網站的速度,基於ruby的Ruby on rails顯然更快,但是Django有一個優勢就是性能優秀,更適合國內網站的應用場景。國外的著名圖片社區Pinterest早期也是基於Django開發的,承受了用戶快速增長的沖擊。所以說如果你想快速開發一個網站,還能兼顧APP客戶端的API調用需求,Django是可以信賴的。
(2)Flask
相對於Django,Flask則是一個輕量級的web框架,Flask的最大的優勢是性能優越,適合配合手機客戶端開發後台API服務。國內基於Flask的Restful API服務這快很火,也是需求最大的。知名的比如網路、網易、小米、陌陌等等很多公司都有基於Flask的應用部署。當然,如果你想做一個傳統的web網站,還是建議使用Django,Flask的優勢是後端、API,不適合構建全功能網站。
2網路爬蟲
網路爬蟲是Python比較常用的一個場景,國際上,google在早期大量地使用Python語言作為網路爬蟲的基礎,帶動了整個Python語言的應用發展。以前國內很多人用採集器搜刮網上的內容,現在用Python收集網上的信息比以前容易很多了。
Python在這個方面有許多工具上的積累,無論是用於模擬HTTP請求的Requests、用於HTML DOM解析的PyQuery/BeautifulSoup、用於自動化分布式爬取任務的Scrapy,還是用於最簡化資料庫訪問的各種ORM,都使得Python成為數據爬取的首選語言之一。特別是,爬取後的數據分析與計算是Python最為擅長的領域,非常容易整合。目前Python比較流行的網路爬蟲框架是功能非常強大的scrapy。
3人工智慧與機器學習
人工智慧是現在非常火的一個方向,AI熱潮讓Python語言的未來充滿了無限的潛力。現在釋放出來的幾個非常有影響力的AI框架,大多是Python的實現,為什麼呢?
因為Python足夠動態、具有足夠性能,這是AI技術所需要的技術特點。比如基於Python的深度學習庫、深度學習方向、機器學習方向、自然語言處理方向的一些網站基本都是通過Python來實現的。機器學習,尤其是現在火爆的深度學習,其工具框架大都提供了Python介面。Python在科學計算領域一直有著較好的聲譽,其簡潔清晰的語法以及豐富的計算工具,深受此領域開發者喜愛。
6桌面程序
Python也可以用於桌面軟體開發(如sublime text等),甚至移動端開發(參看kivy)。Python簡潔方便,各種工具包齊全的環境,能大幅度減少開發者的負擔。著名的UI框架QT有Python語言的實現版本PyQT。Python簡單易用的特性加上QT的優雅,可以很輕松的開發界面復雜的桌面程序,並且能輕松實現跨平台特性。
7多媒體應用
可以用Python裡面的PIL、Piddle、ReportLab 等模塊對圖象、聲音、視頻、動畫等進行處理,還可以用Python生成動態圖表和統計分析圖表。另外,還可以利用PyOpenGl模塊非常快速有效的編寫出三維場景。
『叄』 給知乎寫了個調用 MathJax 來顯示 LaTeX 公式的腳本,大家看看效果如何
題主說的寫個腳本,可我沒看到你的腳本啊,自然沒法評判,更不會知道效果怎樣了。那我們還是來了解這兩個名詞含義吧,有助於以後在類似問題上找出答案來的。
還要很多呢,這里就說這幾個,需要的可以上網查找。
『肆』 Python爬取知乎與我所理解的爬蟲與反爬蟲
關於知乎驗證碼登陸的問題,用到了Python上一個重要的圖片處理庫PIL,如果不行,就把圖片存到本地,手動輸入。
通過對知乎登陸是的抓包,可以發現登陸知乎,需要post三個參數,一個是賬號,一個是密碼,一個是xrsf。
這個xrsf隱藏在表單裡面,每次登陸的時候,應該是伺服器隨機產生一個字元串。所有,要模擬登陸的時候,必須要拿到xrsf。
用chrome (或者火狐 httpfox 抓包分析)的結果:
所以,必須要拿到xsrf的數值,注意這是一個動態變化的參數,每次都不一樣。
拿到xsrf,下面就可以模擬登陸了。
使用requests庫的session對象,建立一個會話的好處是,可以把同一個用戶的不同請求聯系起來,直到會話結束都會自動處理cookies。
注意:cookies 是當前目錄的一個文件,這個文件保存了知乎的cookie,如果是第一個登陸,那麼當然是沒有這個文件的,不能通過cookie文件來登陸。必須要輸入密碼。
這是登陸的函數,通過login函數來登陸,post 自己的賬號,密碼和xrsf 到知乎登陸認證的頁面上去,然後得到cookie,將cookie保存到當前目錄下的文件裡面。下次登陸的時候,直接讀取這個cookie文件。
這是cookie文件的內容
以下是源碼:
運行結果:
https://github.com/zhaozhengcoder/Spider/tree/master/spider_hu
反爬蟲最基本的策略:
爬蟲策略:
這兩個都是在http協議的報文段的檢查,同樣爬蟲端可以很方便的設置這些欄位的值,來欺騙伺服器。
反爬蟲進階策略:
1.像知乎一樣,在登錄的表單裡面放入一個隱藏欄位,裡面會有一個隨機數,每次都不一樣,這樣除非你的爬蟲腳本能夠解析這個隨機數,否則下次爬的時候就不行了。
2.記錄訪問的ip,統計訪問次數,如果次數太高,可以認為這個ip有問題。
爬蟲進階策略:
1.像這篇文章提到的,爬蟲也可以先解析一下隱藏欄位的值,然後再進行模擬登錄。
2.爬蟲可以使用ip代理池的方式,來避免被發現。同時,也可以爬一會休息一會的方式來降低頻率。另外,伺服器根據ip訪問次數來進行反爬,再ipv6沒有全面普及的時代,這個策略會很容易造成誤傷。(這個是我個人的理解)。
通過Cookie限制進行反爬蟲:
和Headers校驗的反爬蟲機制類似,當用戶向目標網站發送請求時,會再請求數據中攜帶Cookie,網站通過校驗請求信息是否存在Cookie,以及校驗Cookie的值來判定發起訪問請求的到底是真實的用戶還是爬蟲,第一次打開網頁會生成一個隨機cookie,如果再次打開網頁這個Cookie不存在,那麼再次設置,第三次打開仍然不存在,這就非常有可能是爬蟲在工作了。
反爬蟲進進階策略:
1.數據投毒,伺服器在自己的頁面上放置很多隱藏的url,這些url存在於html文件文件裡面,但是通過css或者js使他們不會被顯示在用戶看到的頁面上面。(確保用戶點擊不到)。那麼,爬蟲在爬取網頁的時候,很用可能取訪問這個url,伺服器可以100%的認為這是爬蟲乾的,然後可以返回給他一些錯誤的數據,或者是拒絕響應。
爬蟲進進階策略:
1.各個網站雖然需要反爬蟲,但是不能夠把網路,谷歌這樣的搜索引擎的爬蟲給幹了(幹了的話,你的網站在網路都說搜不到!)。這樣爬蟲應該就可以冒充是網路的爬蟲去爬。(但是ip也許可能被識破,因為你的ip並不是網路的ip)
反爬蟲進進進階策略:
給個驗證碼,讓你輸入以後才能登錄,登錄之後,才能訪問。
爬蟲進進進階策略:
圖像識別,機器學習,識別驗證碼。不過這個應該比較難,或者說成本比較高。
參考資料:
廖雪峰的python教程
靜覓的python教程
requests庫官方文檔
segmentfault上面有一個人的關於知乎爬蟲的博客,找不到鏈接了
『伍』 知乎 linux命令和shell腳本的區別
准確上講應該說是
shell
腳本文件編程(當然了,在該
shell
腳本文件中也可以包含
linux
系統命令)。shell
腳本文件是一個文本文件,它是將你需要完成的各種復雜功能通過編寫
shell
程序來實現。例如:模式匹配(awk)
、字元串替換功能(sed)等。在
awk
和
sed
等工具的使用中肯定需要使用正則表達式的熟練使用,而
linux
命令是指
linux
系統的基本操作命令,例如:ls
列出文件名命令、cat
filename、cd
改變子目錄命令等等。這就是它們之間的區別。