頁面網址: http://acm.hdu.edu.cn/showpro...
爬取的目標:
#想要爬取這些個公式的程式碼,Chrome按F12看到的程式碼:
Chrome
F12
但是爬取到的程式碼如下:
#這個程式碼並不能顯示正確的公式,似乎這些程式碼都是js產生的,該如何爬取到這些程式碼。
js
這是MathJax工具解析的。 在HTML程式碼中查看公式p的下一個id為MathJax-Element-X的script,複製裡面的內容,在公式前後加兩個$$(前後都是兩個美元符,所以一共是四個)最後使用MathJax解析就可以了。 說再多不如上圖:
先抓包,把ajax請求抓出來,關鍵是看怎麼構造該請求,主要是一些參數的確定。套路大概下面幾個:1 在上下文搜搜相關參數是否存在,如果是伺服器回傳的,就直接請求伺服器取得該參數;2 如果該參數很明顯不變或變更有規律,可以直接偽造;3 如果參數很複雜且沒規律,那麼需要搜尋參數的key,找到加密的js,然後建構參數的值,得到ajax url;4 實在難度太大那麼用selenium等自動化工具驅動瀏覽器來訪問,它會直接給你渲染好所有js
這是MathJax工具解析的。
在HTML程式碼中查看公式p的下一個id為MathJax-Element-X的script,複製裡面的內容,在公式前後加兩個$$(前後都是兩個美元符,所以一共是四個)最後使用MathJax解析就可以了。
說再多不如上圖:
先抓包,把ajax請求抓出來,關鍵是看怎麼構造該請求,主要是一些參數的確定。套路大概下面幾個:1 在上下文搜搜相關參數是否存在,如果是伺服器回傳的,就直接請求伺服器取得該參數;2 如果該參數很明顯不變或變更有規律,可以直接偽造;3 如果參數很複雜且沒規律,那麼需要搜尋參數的key,找到加密的js,然後建構參數的值,得到ajax url;4 實在難度太大那麼用selenium等自動化工具驅動瀏覽器來訪問,它會直接給你渲染好所有js