0

在http://www.cipo.ic.gc.ca/app/opic-cipo/trdmrks/srch/tmSrch.do?lang=eng有一个页面

当您进行搜索时,它会生成一个自定义 URL,例如http://www.cipo.ic.gc.ca/app/opic-cipo/trdmrks/srch/bldSrch.do;jsessionid=00017eoN13xc3cyM5WYxwkO2v3I:-118SGKV? LANG =工程及textField1的=商标&selectField1 = tmlookup_ext&提交按钮=搜索&andOr1 =和&文本字段2 =咨询与selectField2 =服务&andOr2 =和&文本字段3 =文字栏selectField3 = tmlookup_ext&andOr3 =和&=文字栏selectField4 = tmlookup_ext&andOr4 =和&=&selectField5 = tmlookup_ext&selectWithin = selectStatus = selectDateStatus = FROM日期= 1865年1月1日和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 回答