㈠ 如何用php 編寫網路爬蟲
其實用PHP來爬會非常方便,主要是PHP的正則表達式功能在搜集頁面連接方面很方便,另外PHP的fopen、file_get_contents以及libcur的函數非常方便的下載網頁內容。
㈡ python爬蟲登錄知乎後怎樣爬取數據
模擬登錄
很多網站,比如知乎、微博、豆瓣,都需要登錄之後,才能瀏覽某些內容。所以想要爬取這類網站,必須先模擬登錄。比較簡單的方式是利用這個網站的 cookie。cookie 相當於是一個密碼箱,裡面儲存了用戶在該網站的基本信息。在一次登錄之後,網站會記住你的信息,把它放到cookie里,方便下次自動登錄。所以,要爬取這類網站的策略是:先進行一次手動登錄,獲取cookie,然後再次登錄時,調用上一次登錄得到的cookie,實現自動登錄。
動態爬取
在爬取知乎某個問題的時候,需要將滑動滑鼠滾輪到底部,以顯示新的回答。靜態的爬取方法無法做到這一點,可以引入selenium庫來解決這一問題。selenium庫模擬人瀏覽網站、進行操作,簡單易懂。
㈢ scrapy爬知乎問題,每次爬到240000多以後就結束了,什麼原因
伺服器需要參數沒傳全
建議抓包:模擬get 或post
㈣ 如何用爬蟲爬取知乎專欄信息
URI: http://zhuanlan.hu.com/api/columns/jixin GET/HTTP 1.1
訪問上面的URI,瀏覽器地址欄里直接粘貼也行,得到的返回JSON數據就包含了專欄關注數。
不管AngularJS還是其它架構,都是服務端的東西,再天花亂墜的服務端架構,到了客戶端終究逃不脫HTTP協議,至少目前來說還是如此。
順便分享一些關於爬知乎的東西。
目前來說還沒有官方API的支持,可能最有用的也就是用戶的「個性網址」(好別扭,下稱UID)了,譬如黃繼新老師的UID: jixin,不過可以由用戶本人修改,但每個用戶一定唯一。
以{{%UID}}代替相應的UID。
1. 獲得用戶專欄入口:
URI: http://www.hu.com/people/{{%UID}}/posts GET/HTTP 1.1
XPATH: //div[@id='zh-profile-list-container']
解析上述內容,可獲得該用戶所有的專欄入口地址。
2. 獲得專欄文章信息:
URI: http://zhuanlan.hu.com/api/columns/{{%UID}}/posts?limit={{%LIMIT}}&offset={{%OFFSET}} GET/HTTP 1.1
{{%LIMIT}}: 表示該次GET請求獲取數據項的數量,即專欄文章信息數量。我沒有具體測試過最大值為多少,但是可以設置為比默認值大。默認值為10。
{{%OFFSET}}: 表示該次GET請求獲取數據項的起始偏移。
解析上述內容,可以獲得每篇專欄文章的信息,比如標題、題圖、專欄文章摘要、發布時間、贊同數等。該請求返回JSON數據。
注意:解析該信息時,可以獲得該篇專欄文章的鏈接信息。
3. 獲得專欄文章:
URI: http://zhuanlan.hu.com/api/columns/{{%UID}}/posts/{{%SLUG}} GET/HTTP 1.1
{{%SLUG}}: 即為2中獲得的文章鏈接信息,目前為8位數字。
解析上述內容,可以獲得專欄文章的內容,以及一些文章的相關信息。該請求返回JSON數據。
上述這些應該足夠滿足題主的要求了。最重要的還是要善用Chrome調試工具,此乃神器!
* * * * * * * * * *
以下是一些零散的更新,用於記錄知乎爬蟲的想法。當然,相關實現還是要尊重ROBOTS協議,可以通過http://www.hu.com/robots.txt查看相關參數。
UID是對應該用戶所有信息的入口。
雖然用戶信息有修改間隔限制(通常為若干月不等),但考慮到即使是修改用戶名的操作也會使得UID變更,進而令先前的存儲失效。當然這也是可以突破的:用戶hash。這個hash值為32位字元串,對每個賬號是唯一且不變的。
通過UID獲得hash:
URI: http://www.hu.com/people/%{{UID}} GET/HTTP 1.1
XPATH: //body/div[@class='zg-wrap zu-main']//div[@class='zm-profile-header-op-btns clearfix']/button/@data-id
解析上述內容,可獲得UID對應的hash值。(沒錯,這個值就是存在「關注/取消關注」這個按鈕里的。)這樣即可唯一標識用戶。
目前還沒有找到方法通過hash_id獲得UID,但是有間接方法可以參考:通過關注列表定期檢查用戶信息是否變更,當然關注/取消關注操作也可以自動化:
關注操作
URI: http://www.hu.com/node/MemberFollowBaseV2 POST/HTTP 1.1
Form Data
method: follow_member
params: {"hash_id": ""}
_xsrf: <xsrf>
取消關注操作
URI: http://www.hu.com/node/MemberFollowBaseV2 POST/HTTP 1.1
Form Data
method: unfollow_member
params: {"hash_id": ""}
_xsrf: <xsrf>
知乎爬蟲需要一份UID列表才能正常運轉,如何獲得這份列表是一個需要考慮的問題。目前一個可行的想法是選定若干大V用戶,批量爬取其被關注列表。舉例來說,張公子目前被關注數達到58W+,通過:
URI: http://www.hu.com/node/ProfileFollowersListV2 POST/HTTP 1.1
Form Data
method: next
params: {"offset": {{%OFFSET}}, "order_by": "hash_id", "hash_id": "{{%HASHID}}"}
_xsrf: <xsrf>
㈤ 如何使用python爬取知乎數據並做簡單分析
一、使用的技術棧:
爬蟲:python27 +requests+json+bs4+time
分析工具: ELK套件
開發工具:pycharm
數據成果簡單的可視化分析
1.性別分布
0 綠色代表的是男性 ^ . ^
1 代表的是女性
-1 性別不確定
可見知乎的用戶男性頗多。
二、粉絲最多的top30
粉絲最多的前三十名:依次是張佳瑋、李開復、黃繼新等等,去知乎上查這些人,也差不多這個排名,說明爬取的數據具有一定的說服力。
三、寫文章最多的top30
四、爬蟲架構
爬蟲架構圖如下:
說明:
選擇一個活躍的用戶(比如李開復)的url作為入口url.並將已爬取的url存在set中。
抓取內容,並解析該用戶的關注的用戶的列表url,添加這些url到另一個set中,並用已爬取的url作為過濾。
解析該用戶的個人信息,並存取到本地磁碟。
logstash取實時的獲取本地磁碟的用戶數據,並給elsticsearchkibana和elasticsearch配合,將數據轉換成用戶友好的可視化圖形。
五、編碼
爬取一個url:
解析內容:
存本地文件:
代碼說明:
* 需要修改獲取requests請求頭的authorization。
* 需要修改你的文件存儲路徑。
源碼下載:點擊這里,記得star哦!https : // github . com/forezp/ZhihuSpiderMan六、如何獲取authorization
打開chorme,打開https : // www. hu .com/,
登陸,首頁隨便找個用戶,進入他的個人主頁,F12(或滑鼠右鍵,點檢查)七、可改進的地方
可增加線程池,提高爬蟲效率
存儲url的時候我才用的set(),並且採用緩存策略,最多隻存2000個url,防止內存不夠,其實可以存在redis中。
存儲爬取後的用戶我說採取的是本地文件的方式,更好的方式應該是存在mongodb中。
對爬取的用戶應該有一個信息的過濾,比如用戶的粉絲數需要大與100或者參與話題數大於10等才存儲。防止抓取了過多的僵屍用戶。
八、關於ELK套件
關於elk的套件安裝就不討論了,具體見官網就行了。網站:https : // www . elastic . co/另外logstash的配置文件如下:
從爬取的用戶數據可分析的地方很多,比如地域、學歷、年齡等等,我就不一一列舉了。另外,我覺得爬蟲是一件非常有意思的事情,在這個內容消費升級的年代,如何在廣闊的互聯網的數據海洋中挖掘有價值的數據,是一件值得思考和需不斷踐行的事情。
㈥ 如何對知乎內容進行爬蟲
下面說明知乎爬蟲的源碼和涉及主要技術點:
(1)程序package組織
(2)模擬登錄(爬蟲主要技術點1)
要爬去需要登錄的網站數據,模擬登錄是必要可少的一步,而且往往是難點。知乎爬蟲的模擬登錄可以做一個很好的案例。要實現一個網站的模擬登錄,需要兩大步驟是:(1)對登錄的請求過程進行分析,找到登錄的關鍵請求和步驟,分析工具可以有IE自帶(快捷鍵F12)、Fiddler、HttpWatcher;(2)編寫代碼模擬登錄的過程。
模擬登錄
(3)網頁下載(爬蟲主要技術點2)
模擬登錄後,便可下載目標網頁html了。知乎爬蟲基於HttpClient寫了一個網路連接線程池,並且封裝了常用的get和post兩種網頁下載的方法。
(4)自動獲取網頁編碼(爬蟲主要技術點3)
自動獲取網頁編碼是確保下載網頁html不出現亂碼的前提。知乎爬蟲中提供方法可以解決絕大部分亂碼下載網頁亂碼問題。
(5)網頁解析和提取(爬蟲主要技術點4)
使用Java寫爬蟲,常見的網頁解析和提取方法有兩種:利用開源Jar包Jsoup和正則。一般來說,Jsoup就可以解決問題,極少出現Jsoup不能解析和提取的情況。Jsoup強大功能,使得解析和提取異常簡單。知乎爬蟲採用的就是Jsoup。
(6)正則匹配與提取(爬蟲主要技術點5)
雖然知乎爬蟲採用Jsoup來進行網頁解析,但是仍然封裝了正則匹配與提取數據的方法,因為正則還可以做其他的事情,如在知乎爬蟲中使用正則來進行url地址的過濾和判斷。
(7)數據去重(爬蟲主要技術點6)
對於爬蟲,根據場景不同,可以有不同的去重方案。(1)少量數據,比如幾萬或者十幾萬條的情況,使用Map或Set便可;(2)中量數據,比如幾百萬或者上千萬,使用BloomFilter(著名的布隆過濾器)可以解決;(3)大量數據,上億或者幾十億,Redis可以解決。知乎爬蟲給出了BloomFilter的實現,但是採用的Redis進行去重。
(8)設計模式等Java高級編程實踐
除了以上爬蟲主要的技術點之外,知乎爬蟲的實現還涉及多種設計模式,主要有鏈模式、單例模式、組合模式等,同時還使用了Java反射。除了學習爬蟲技術,這對學習設計模式和Java反射機制也是一個不錯的案例。
4. 一些抓取結果
㈦ php模擬登陸知乎
這種模擬登陸其實很簡單,php的話主要用curl來實現。仔細研究一下你要抓的站具體是怎麼實現用戶登錄的,可以用wireshark或者burpsuite(建議用後者)抓包看看整個過程都有那幾次請求,每次請求都發送了哪些數據,構造好發給他就可以實現登錄了。
之後獲取個人信息就很容易了,找找php解析html庫,或者最簡單粗暴的就是字元串截取函數加正則表達式,把你想要的數據提取出來就好了。
對於你給出的這種驗證碼屬於非常容易識別的驗證碼了,基本的識別原理參看使用Canvas進行驗證碼識別。
當然比較蛋疼的問題就是網頁編碼問題,經常爬過來全是亂碼,網上找找看轉碼的方法,都試一下,這是一門玄學,能不能成功看你人品和耐心吧。
㈧ 對知乎內容使用爬蟲爬取數據,為什麼會遇到403問題
應該是知乎的反爬蟲技術比較嚴,你試試前嗅的爬蟲,我之前用它采企業信息系統的數據,他們反爬蟲機制非常嚴格,後來用他們軟體就可以寫腳本破解,順利採集到了
㈨ 如何使用爬蟲自動點擊知乎中的這個按鈕
兩種方法: 帶cookielib和urllib2 import urllib2 import urllib import cookielib def login(): email = raw_input("請輸入用戶名:") pwd = raw_input("請輸入密碼:") data={"email":email,"password":pwd} post_data=urllib.urlencode(data cj=cookielib.CookieJar() opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))headers ={"User-agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"}website = raw_input('請輸入網址:')req=urllib2.Request(website,post_data,headers)content=opener.open(req)print content.read() 使用selenium import selenium import webdriver browser=webdriver.Firefox() browser.get("Url") browser.find_element_by_id(" ").sendkey("username") browser.find_element_by_id(" ").sendkey("pass") browser.find_element_by_id(" ").click()
㈩ 如何用爬蟲爬取知乎專欄信息
推薦個很好用的軟體,我也是一直在用的,就是前嗅的ForeSpider軟體,
我是一直用過很多的採集軟體,最後選擇的前嗅的軟體,ForeSpider這款軟體是可視化的操作。簡單配置幾步就可以採集。如果網站比較復雜,這個軟體自帶爬蟲腳本語言,通過寫幾行腳本,就可以採集所有的公開數據。
軟體還自帶免費的資料庫,數據採集直接存入資料庫,也可以導出成excel文件。
如果自己不想配置,前嗅可以配置採集模板,我的模板就是從前嗅購買的。
另外他們公司不光是軟體好用,還有自己的數據分析系統,直接採集完數據後入庫,ForeSpider內部集成了數據挖掘的功能,可以快速進行聚類分類、統計分析等,採集結果入庫後就可以形成分析報表。
最主要的是他採集速度非常快,我之前用八爪魚的軟體,開伺服器采,用了一個月采了100萬條,後來我用ForeSpider。筆記本採的,一天就好幾百萬條。
這些都是我一直用前嗅的經驗心得,你不妨試試。