0

http://www.cipo.ic.gc.ca/app/opic-cipo/trdmrks/srch/tmSrch.do?lang=engにページがあります。

検索を行うと、カスタム URL が生成されます。 lang=eng&textField1=trademark&selectField1=tmlookup_ext&submitButton=Search&andOr1=and&textField2=consulting&selectField2=services&andOr2=and&textField3=&selectField3=tmlookup_ext&andOr3=and&textField4=&selectField4=tmlookup_ext&andOr4=and&textField5=&selectField5=tmlookup_ext&selectWithin=&selectStatus=&selectDateStatus=&fromDate=1865-01-01&toDate=2013-01- 15&selectMaxDoc=500&selectDocsPerPage=10

その jsessionid 番号を持っていない限り、simple_html_dom を使用してカスタム フォームで結果をスパイダーすることはできません。

そのセッションIDを取得するスマートな方法はありますか? セッション ID を取得したら、検索 URL を生成し、非常に意味のある方法で検索結果を操作できます。

ありがとうございました!

4

1 に答える 1

1

検索ページに入ると、jsessionid が Cookie として取得されます。検索リクエストを送信する前に、スパイダーもこの Cookie を取得する必要があります。

これを行う方法の例を次に示します。この例では、PEAR リポジトリのHTTP_Request2パッケージを使用します。

require_once 'HTTP/Request2.php';

$url = 'http://www.cipo.ic.gc.ca/app/opic-cipo/trdmrks/srch/tmSrch.do?lang=eng';
$request = new HTTP_Request2($url);
$response = $request->send();
$cookies = $response->getCookies();

foreach($cookies as $cookie) {
    if($cookie['name'] === 'JSESSIONID') {
        $jsessionid = $cookie['value'];
        break;
    }   
}

// play around with it
echo $jsessionid;
于 2013-01-17T02:16:59.450 に答える