在作人人網頁的爬蟲時,爬取人人新鮮事搜索頁面http://browse.renren.com/s/all?from=homeindex&q=%E6%97%A0%E8%81%8A&itab=11#qt=%E6%97%A0%E8%81%8A/tindex=11/curpage=4的源碼時,改變curpage=後面的數字後爬取的內容居然都同樣,每次都是第一頁。在不一樣的頁數右鍵「查看頁面源代碼」發現確實都是第一頁的新鮮事內容,沒有變化。java
而後火狐右鍵「查看元素」,發如今每次翻頁時,只有新鮮事部分的HTML標籤變化了(閃現橙色),估計是用了JAVASCRIPT動態更新/加載數據,而不是從新請求了一個新的網址連接瀏覽器
知道了問題所在後,開始百度,找到了這樣一篇神文章: Java抓取網頁數據(原網頁+Javascript返回數據)
網絡
有時候網站爲了保護本身的數據,並無把數據直接放在網頁源碼中返回,而是採用異步的方式,用JS返回數據,這樣能夠避免搜索引擎等工具對網站數據的抓取。
異步
按照博文的方法,一步一步,使用火狐查看元素裏的「網絡」進行分析,發現果不其然,在換頁的時候,是異步採用js返回了數據,請求的真正的連接天然也和瀏覽器中所看到的不同。以下圖:工具
查看響應的內容:網站
果真!就是想要找的內容!總共10條新鮮事,一條不差 並且正是咱們想要的頁碼的搜索引擎
以後只要把原來爬取HTML網頁的java爬蟲代碼的url改爲這個真正的請求地址就行了(而不是在瀏覽器地址欄明眼看到的),其餘的都不用變
url