java如何爬取js處理后的代碼
問(wèn)題描述
頁(yè)面地址: http://acm.hdu.edu.cn/showpro...
爬取的目標(biāo):
想要爬取這些個(gè)公式的代碼,Chrome按F12看到的代碼:
但是爬取到的代碼如下:
這個(gè)代碼并不能顯示正確的公式,貌似這些代碼都是js生成的,該如何爬取到這些代碼。
問(wèn)題解答
回答1:這是MathJax工具解析的。在HTML代碼中查看公式p的下一個(gè)id為MathJax-Element-X的script,復(fù)制里面的內(nèi)容,在公式前后加兩個(gè)$$(前后都是兩個(gè)美元符,所以一共是四個(gè))最后使用MathJax解析就可以了。說(shuō)再多不如上圖:
先抓包,把a(bǔ)jax請(qǐng)求抓出來(lái),關(guān)鍵是看怎么構(gòu)造該請(qǐng)求,主要是一些參數(shù)的確定。套路大概下面幾個(gè):1 在上下文搜搜相關(guān)參數(shù)是否存在,如果是服務(wù)器返回的,就直接請(qǐng)求服務(wù)器獲得該參數(shù);2 如果該參數(shù)很明顯不變或者變化有規(guī)律,可以直接偽造;3 如果參數(shù)很復(fù)雜且沒(méi)規(guī)律,那么需要搜索參數(shù)的key,找到加密的js,然后構(gòu)造參數(shù)的值,得到ajax url;4 實(shí)在難度太大那么用selenium等自動(dòng)化工具驅(qū)動(dòng)瀏覽器來(lái)訪問(wèn),它會(huì)直接給你渲染好所有js
相關(guān)文章:
1. angular.js - webpack build后的angularjs路由跳轉(zhuǎn)問(wèn)題2. java - web項(xiàng)目中,用戶登陸信息存儲(chǔ)在session中好 還是cookie中好,取決于什么?3. 數(shù)組按鍵值封裝!4. mysql - 根據(jù)一個(gè)字段查找另一個(gè)字段重復(fù)的數(shù)據(jù)?并刪除相同的記錄,保留其中一個(gè)。5. mysql - 查詢字段做了索引為什么不起效,還有查詢一個(gè)月的時(shí)候數(shù)據(jù)都是全部出來(lái)的,如果分拆3次的話就沒(méi)問(wèn)題,為什么呢。6. 這個(gè)是什么問(wèn)題?7. mysql - navicat 經(jīng)常打開(kāi)表一直在載入中 也不能關(guān)閉 著急解決8. 單擊登錄按鈕無(wú)反應(yīng)9. mysql 新增用戶 主機(jī)名設(shè)定 失敗10. mysql儲(chǔ)存json錯(cuò)誤
