點選我前往github檢視源** 別忘記star
usermanage是獲取使用者資訊的爬蟲模組
public建構函式class
usermanage
使用者主頁的url格式為""+url_token+"/following";
public usermanage(string先封裝乙個獲取html頁面的方法urltoken)
private拿到了html頁面,接下來是剝取頁面中的json,借助htmlagilitypackbool
gethtml()
public新增使用者的關注列表的鏈結void
analyse()
毫秒", watch.elapsedmilliseconds.tostring());
}catch
(exception ex)
}}
private對json資料進一步剝取,只要使用者的資訊,借助json解析工具newtonsoft.jsonvoid getuserflowerandnext(string
json)
privatevoid getuserinformation(string
json)
現在來完成下analyse函式
public void analyse()urltask是從nexturl佇列獲取使用者的關注列表的url,獲取關注列表。伺服器返回的json的資料毫秒", watch.elapsedmilliseconds.tostring());
}catch (exception ex)
}}
}
封裝乙個物件的序列化和反序列化的類
public封裝urltask類class
serializehelper
//////
反序列化操作
/// ///
//////
public
static t deserializetoobject(string
str)
}
public classurltask新增乙個獲取資源的方法private string jsonstring
public urltask(string_url)
}
private boolgethtml()解析json方法
public voidanalyse()解析:如果result.paging.is_end為true,那麼這個是使用者關注列表的最後一頁,那麼它的nexturl應該加入佇列,負責不要加入,對於後面的使用者陣列,因為資訊不去全,不要了,有了id前往主頁獲取詳細資訊。 模組組合foreach (var item inresult.data)
}watch.stop();
console.writeline("解析json用了毫秒",watch.elapsedmilliseconds.tostring());}}
catch(exception ex)
}
封裝乙個乙個方法,從佇列拿到nextutl,前往使用者的關注列表,拿到更多使用者id
private static voidgetnexturl()封裝乙個方法,迴圈從佇列獲取使用者的urltoken(如果佇列空了,執行getnexturl),前往使用者主頁,獲取資訊}
private static void getuser(objectdata)在main函式裡面執行這些方法,由於任務量大,採用多執行緒,執行緒數視情況而定else}}
for (int i = 0; i < 10; i++)新增種子資料,用於剛開始時候佇列都是空的,需要新增種子資料
手動新增,在redile-cl.exe敲命令
在main函式中加入
usertask task=newusertask(「某個使用者的urltoken」);執行一次之後要注釋掉,避免重複task.analyse();
爬蟲 抓取百萬知乎使用者設計之實體設計
點選我前往github檢視源 一.實體的關係 實體是根據返回的json資料來設計的 教育經歷方面 使用者可以有很多教育經理,user和education是一對多的關係,乙個education對應乙個education 乙個使用者可以有多個工作,當然很多人可以從事同乙份工作,每份工作對應一家公司,對應...
Python爬蟲之模擬登陸知乎
在chrome瀏覽器下抓取登陸過程的包 注意把preserve log勾上 表單的結構主要包括 xsrf,password,phone num 我們要找到 xsrf的值,重新載入zhihu.com之後我們可以發現response裡面有 xsrf 我們就可以把 xsrf的值讀取出來 然後set一下co...
Python網路爬蟲之抓取訂餐資訊
本文以大眾點評網為例,獲取頁面的餐館資訊,以達到練習使用python的目的。import urllib.request import re def fetchfood url 模擬使用瀏覽器瀏覽大眾點評的方式瀏覽大眾點評 headers user agent opener urllib.reques...