所謂爬蟲,首先要通過各種手段爬取到想要站點的數(shù)據(jù)。 web2.0之后,各種網(wǎng)絡站點類型越來越多,早期的站點多為靜態(tài)頁面【html 、htm】,后來逐步加入 jsp。asp,等交互性強的頁面。再后來隨著js的興起,也處于站點的美觀和易于維護,越來越多的ajax異步請求方式數(shù)據(jù)站點。[不扯犢子了 ,馬上上示例]
??????參與工作時間不是很長,但工作期間一直做不同的爬蟲項目。對常見的頁面數(shù)據(jù)獲取,有一些簡單的認識。 ?接觸到的頁面分為三類。
??A 靜態(tài)頁面(數(shù)據(jù)在源碼中直接可以獲取到)
?B數(shù)據(jù)在基源碼中沒有,攜帶請求數(shù)據(jù)請求,在瀏覽器解析過程中,封裝出含數(shù)據(jù)的源碼
?C數(shù)據(jù)在瀏覽器解析后的源碼中 沒有,是通過頁面的js函數(shù),調用請求的js數(shù)據(jù),顯示的。
分別舉個例子以示說明:
A ,這一類最簡單,例如百度首頁 ,現(xiàn)在想獲取它的頁面顯示的鏈接信息
查看源碼
不難發(fā)現(xiàn)頁面中的鏈接信息在源碼中都有體現(xiàn),直接寫正則
<a\s[^>]*?href\s*=[^\\]\s*['"]?([^'"\s>*?]*)[^>]*>[\s\S]*?(.*?)[</a>].+?
在RegexBuddy 3 工具中
通過去group 1 [鏈接] group[Aname] 取得想要的數(shù)據(jù),再通過隊列循環(huán)排除依次取出百度鏈到的所有站點。
B
像企業(yè)類型信息查詢網(wǎng)站 http://qyxy.baic.gov.cn/zhcx/zhcxAction!list.dhtml?op=cx
想要獲取通過程序輸入企業(yè)名稱 ?而查詢出有關注冊信息
不難發(fā)現(xiàn)當人工輸入企業(yè)名稱【2】 是 url【1】中的地址欄并沒有變化,但是 【3】的響應結果卻會隨著我們查詢的詞不同而響應出不通的結果。
這就是上述的基頁面不變,但是源碼在請求后解析加載顯示的不一樣 。
對于這種情況 我們需要借助工具分析在我們在點擊查詢的操作時進行了那些與服務器的交互,
通過httpwatcher?
?
通過分析不難發(fā)現(xiàn),在點擊查詢的動作時,http請求 通過post方式發(fā)送了一個請求數(shù)據(jù)到給服務器端 ?zhcxModel.ent_name ?百度。這樣通過程序建立http鏈接時,我們把請求數(shù)據(jù)推送給服務器
?
然后再接收數(shù)據(jù)源碼,這是源碼中就含有查詢出來的信息了,再通過A的方式,把想要的信息通過正則取出來。
C 例如土豆的用戶信息頁面 http://www.tudou.com/home/tui/u57045481t2.html 【隨便拿了一個頁面,若牽涉?zhèn)€人隱私,請聯(lián)系我,我會立馬更改】
?
想抓取土豆的粉絲數(shù),關注數(shù),及粉絲的詳細信息
這個頁面查看源碼 看不到保護焊有粉絲數(shù) 1327【1】等 及 粉絲的名稱、鏈接等【2】信息
通過httpwatcher 重新請求頁面 ,記錄與服務器交互的數(shù)據(jù),
不難發(fā)現(xiàn)?
粉絲數(shù) 信息 在請求時 發(fā)送的這個鏈接
http://www.tudou.com/my/tui/userInfo.html?uid=57045481&callback=jQuery16408569448299658144_1366125895716&_=1366125895774 中體現(xiàn),再看藍色圈中的數(shù)據(jù)即為該用戶的id信息,在初始URL中也含有。這樣就不難總結出 用戶的關注人信息 數(shù)據(jù) 通過拼接 http://www.tudou.com/my/tui/userInfo.html?uid= + 用戶ID + &callback=jQuery ??即可獲得。
再看
【2】粉絲人信息
與上述方法差不多 ,探尋到發(fā)送的js請求,獲取json數(shù)據(jù) 。
像翻頁類型的數(shù)據(jù),1327個服務器端沒有一次請求把所有數(shù)據(jù)加載過來,
觀察粉絲人數(shù)的js請求地址 ,有兩個參數(shù)pageSize currentPage 。pageSize 用來顯示每一頁顯示多少個,currentPage用來顯示當前頁,頁面中有總頁數(shù)111,同時在剛探尋的js中也有總頁數(shù)的信息,這樣就很容易的通過變換currentPage 的值來依次通過A的方式去到用戶的頭像 ,姓名,等信息了。
不早了,明兒還得干活兒 ,今天就先到這兒了,這個目前接觸到的一些類型數(shù)據(jù)分析,當然還有更復雜些的,接觸面有限,等后續(xù)發(fā)現(xiàn)和學習我會陸續(xù)補充上的 。
歡迎指正和交流學習
爬蟲技術交流_crawler QQ群:167047843
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
