2

私は何日もこの問題を抱えています...ページのhtml全体をphpからロードする必要があります。このページには、すべてのページが読み込まれたときに呼び出される jquery 関数があります。この関数は他の html をページにロードするため、すべての html をロードする必要があります (jquery でロードされた部分も)。jqueryからのみロードされたタグを見つけようとして、すべてのページを取得していることがわかります。(例: 名前が XXX のタグ入力、複数属性のタグ入力など)

だから私は試します:

$html = file_get_contents("http://wwww.siteToScrape.com");
if (strpos($html, 'multiple') !== false) {
    echo 'found';
} else {
    echo 'not found';
}

しかし、結果は「見つかりません」です。

次に、単純な html domをダウンロードして試してみました。

include 'simple_html_dom.php';
$html = file_get_html("http://wwww.siteToScrape.com");
if (strpos($html, 'multiple') !== false) {
    echo 'found';
} else {
    echo 'not found';
}

しかし、結果はまだ「見つかりません」のままです。

それで、ブラウザをエミュレートするいくつかのphpスクリプトを取得することを考えています(jqueryもロードできます) 。そして、 PHP Scriptable Web Browserをダウンロードして、試してみました:

require_once('browser.php');
$browser = new SimpleBrowser();
$p = $browser->get('http://wwww.siteToScrape.com');
if (strpos($p, 'multiple') !== false) {
    echo 'found';
} else {
    echo 'not found';
}

しかし、結果はまだ「見つかりません」です。私はそれを行う方法がわからない..誰かが私を助けることができますか??? ありがとう!!!!

4

3 に答える 3

2

私の知る限り、これは「PHPのみ」では不可能です。Javascript はサーバーではなくクライアントで実行されるため、何らかのブラウザー エミュレーター環境がないと実行できません。

編集:完全に生成された後にWebページ全体のinnerHTMLを取得するJavaScriptをWebページ自体に配置し、ajax呼び出しを使用してそれをサーバーに送信できます。same-origin-policy の制限内にとどまる必要があります (ホスト Web ページの発信元以外のドメインに対して ajax 呼び出しを行うことはできません)。

于 2012-05-08T22:49:05.617 に答える
2

問題は、サーバーとクライアントを混在させようとしていることです。

PHP はサーバー上で実行され、Javascript (したがって jQuery も) はクライアント ブラウザーで実行されます。

PHP を使用して JavaScript を実行する簡単な方法はありません。私の知る限り、それは不可能です。Java などの他の言語は、あなたがしようとしていることを実行できる場合があります。

これを行う別の方法を検討する必要があります。

これが、javascript を使用した操作によって Web クローラーが影響を受けない理由でもあります。これは、開発時に覚えておくと便利なことです。動的読み込みは、これらのクローラーによってまったくインデックス化されません。

于 2012-05-08T22:52:24.630 に答える
1

他の人が言ったように、jquery は JavaScript であり、通常はサーバーではなくクライアント (Web ブラウザー) によって実行されます。

サーバー側の言語である PHP には、JavaScript インタープリターがありません。

私が知る限り、PHP を使用して JavaScript を実行する最も簡単な方法は、ヘッドレス ブラウザを統合する Web テスト ツールを使用することです。ゾンビnode.js ヘッドレス ブラウザーのバックエンドを持つminkを確認できます。

このようなさまざまな PHP インターフェイスを備えたphantomjsヘッドレス ブラウザもあります。Googleで簡単に検索して見つけました。

よりリソース集約的な分野には、 PHP インターフェイスも備えたseleniumもあります。

于 2012-05-09T14:06:35.940 に答える