本文目錄一覽:
用php 怎麼抓取js+ajax動態生成的頁面內容
第一步,查看網頁源代碼,找到ajax請求的URL。
比如,js代碼為:
$.ajax({
url: ‘ajax.php?id=100’,
data: {ad_num:num,ad_str:str,cart_update_time:cart_update_time},
type: ‘POST’,
dataType: ‘text’,
async : false,
success: function(data){
}
其中的ajax.php?id=100就是ajax請求的URL。
第二步,拼接URL,用網站的域名加上這個找到的請求路徑。
比如,網站域名為: 拼接後的URL為:
第三步,用PHP讀取第二步拼接出的URL即可。
怎麼爬取網頁的動態內容,很多都是js動態生
抓取動態頁面有兩種常用的方法,一是通過JavaScript逆向工程獲取動態數據接口(真實的訪問路徑),另一種是利用selenium庫模擬真實瀏覽器,獲取JavaScript渲染後的內容。但selenium庫用起來比較繁瑣,抓取速度相對較慢,所以第一種方法日常使用較多。
如何抓取js函數生成的網頁內容
直接用net/http請求返回json的地址。有些數據可能需要cookie,可以直接用瀏覽器的或者模擬登陸。代碼如下:
final WebClient webClient = new WebClient();
String url=””;
final HtmlPage page = webClient.getPage(“”);
WebClient client = new WebClient( BrowserVersion.INTERNET_EXPLORER_8 ,”127.0.0.1″, 28089 );
final WebClient client = new WebClient(BrowserVersion.INTERNET_EXPLORER_8);
final HtmlPage page =client.getPage(url);
client.waitForBackgroundJavaScript(300000);
client.waitForBackgroundJavaScript(120*1000);
get list of all divs
final List divs = (List) page.getByXPath(“//div”);
HtmlElement he =page.getElementById(“dealList”);
get div which has a ‘name’ attribute of ‘John’
final HtmlDivision div = (HtmlDivision) page.getByXPath(“//div[@name=’John’]”).get(0);
System.out.println(he.asXml());
System.out.println(he.getFirstChild());
System.out.println(he.getFirstChild().asXml());
client.closeAllWindows();
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/238525.html