講師回答 / Peter
中文也是可以的,可以提供一下代碼嗎?
講師回答 / Peter
一般來(lái)說(shuō)curl下載下來(lái)的內(nèi)容關(guān)注的是數(shù)據(jù),而html的解析放到瀏覽器里面對(duì)齊很有可能是不同的,因?yàn)閏ss也會(huì)影響頁(yè)面布局,不同的瀏覽器也會(huì)有不同。但是,顯示在頁(yè)面上面的數(shù)據(jù)應(yīng)該是沒問(wèn)題的。
講師回答 / Peter
只能夠單獨(dú)抓取,這個(gè)是硬傷。比如頁(yè)面當(dāng)中的數(shù)據(jù)如果是通過(guò)Ajax來(lái)動(dòng)態(tài)獲取的話,curl也是無(wú)法拿到這些動(dòng)態(tài)數(shù)據(jù)的。這兩點(diǎn)應(yīng)該說(shuō)是curl的使用限制。對(duì)于你這個(gè)情況,如果能夠知道這個(gè)frame的url,那么直接抓取它也許就能夠幫助你解決這個(gè)問(wèn)題了。如果完整數(shù)據(jù)是合并起來(lái)的,也就是一部分?jǐn)?shù)據(jù)在當(dāng)前頁(yè)面,一部分在frame里面。那么就只能先抓取當(dāng)前頁(yè)面,然后解析當(dāng)前頁(yè)面的html,找到這個(gè)frame的src,然后再次抓取這個(gè)frame的page,最后把兩個(gè)頁(yè)面的數(shù)據(jù)合并起來(lái)。
講師回答 / Peter
后面加/user/login是因?yàn)檫@個(gè)地址是登錄的地址,我們發(fā)送登錄請(qǐng)求是發(fā)送到這個(gè)地址的。POST數(shù)據(jù)只能通過(guò)讀取網(wǎng)頁(yè)中附帶的JS代碼得到,因?yàn)橐呀?jīng)超出本課程的范圍,所以沒有展開。
講師回答 / Peter
一次只能下載一個(gè)文件,但是可以通過(guò)代碼的方式下載一整個(gè)目錄,帶上發(fā)送下載指令還是一個(gè)文件一個(gè)文件下的。比如,我們知道有一個(gè)目錄,里面有N個(gè)文件,那么用PHP可以寫一個(gè)循環(huán)把這N個(gè)文件下載下來(lái)。
2014-08-09
講師回答 / Peter
您指的是哪些數(shù)據(jù)呢?只要下載下來(lái)的網(wǎng)頁(yè)看到了必須登錄才能看到的數(shù)據(jù),那么可以肯定登錄下載都是正確的。如果有一些數(shù)據(jù)沒有下載到,可以看看是什么數(shù)據(jù)。實(shí)質(zhì)上我們下載的是html的代碼,但是如果有一些數(shù)據(jù)是通過(guò)JS動(dòng)態(tài)載入的,那么curl對(duì)于這些動(dòng)態(tài)載入的資源是無(wú)法下載到的。
2014-08-09
講師回答 / Peter
可以貼一下你的php代碼嗎?暫時(shí)無(wú)法判斷是什么問(wèn)題。