You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP POST分页爬虫问题:无法获取日本HelloWork站点多页数据

解决HelloWork求职站点分页爬取问题

核心问题分析

这个站点是基于Java Web框架的求职平台,分页依赖表单提交+会话Cookie(JSESSIONID),两个关键点缺一不可:

  1. 所有请求必须复用同一个JSESSIONID,否则会被视为新会话,无法获取后续分页数据
  2. 分页请求需要传递完整的表单参数(不是简单修改URL参数),必须从浏览器抓包获取所有提交字段

具体解决步骤

1. 抓包获取分页表单参数

打开浏览器F12→Network面板,点击分页按钮(比如第2页),找到对应的POST请求,复制Form Data里的所有字段,常见必填项包括:

  • action: 分页对应的动作(如moveToPage或nextPage)
  • screenId: 固定值GECA110010
  • pageNo: 目标页码(如2)
  • 其他隐藏字段(如searchCondition、__struts_token等,站点会动态生成)

2. PHP代码改造(复用会话+传递正确表单参数)

使用cURL的CURLOPT_COOKIEJAR和CURLOPT_COOKIEFILE持久化会话Cookie,同时构造完整的表单数据:

<?php
// 初始化会话Cookie保存路径
$cookieFile = tempnam(sys_get_temp_dir(), 'hellowork_cookie');

// 第一步:获取初始页面,保存JSESSIONID
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.hellowork.mhlw.go.jp/kensaku/GECA110010.do?action=initDisp&screenId=GECA110010');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); // 保存Cookie到本地文件
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36');
$firstPageContent = curl_exec($ch);
curl_close($ch);

// 第二步:爬取指定页码(示例:第2页)
$targetPage = 2;
// 从抓包结果中复制完整表单参数,根据实际情况补充
$postData = [
    'action' => 'moveToPage', // 替换为抓包到的分页动作
    'screenId' => 'GECA110010',
    'pageNo' => (string)$targetPage,
    'searchCondition' => '...', // 初始页面的搜索条件,需从第一页HTML中解析或抓包获取
    '__struts_token' => '...', // 如果有令牌字段必须带上
    // 其他必填字段如currentPage、totalCount等
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.hellowork.mhlw.go.jp/kensaku/GECA110010.do');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile); // 复用之前保存的会话Cookie
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36');

$pageContent = curl_exec($ch);
if(curl_errno($ch)){
    echo 'CURL错误:' . curl_error($ch);
}
curl_close($ch);

// 处理并输出页面内容
echo $pageContent;

// 清理临时Cookie文件
unlink($cookieFile);
?>

3. 关键注意事项

  • 必须严格复制抓包到的所有表单字段,遗漏任何一个都会导致请求失败
  • 动态生成的令牌字段(如__struts_token)需要从第一页HTML中解析,不能硬编码
  • 控制请求频率,避免触发站点反爬机制(如IP封禁)

内容的提问来源于stack exchange,提问作者Saurav g

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:50:24