使用ABN Lookup与Simple HTML DOM提取ABN企业名称遇问题
解决ABN Lookup页面企业名称爬取问题
你的问题核心是Simple HTML DOM的选择器语法和文本提取方式用错了,以下是具体修正方案:
问题拆解
- 选择器语法错误:Simple HTML DOM不支持
tbody(2)这种写法,定位第二个<tbody>元素,要改用tbody:nth-child(2),或者直接遍历所有tbody元素取第二个(索引从0开始,对应数组下标1)。 - 文本提取方式错误:Simple HTML DOM没有
>text这种选择器语法,获取元素文本需要调用元素的plaintext属性,该属性会自动去除HTML标签,返回纯文本内容。
修正后的代码示例
// 引入Simple HTML DOM库 include('simple_html_dom.php'); // 目标页面URL $targetUrl = 'https://abr.business.gov.au/ABN/View?id=12928238010'; // 获取页面HTML内容 $html = file_get_html($targetUrl); // 方法1:用:nth-child选择器直接定位目标元素 $nameElement = $html->find('div#content div form div table tbody:nth-child(2) td:nth-child(1) a', 0); // 方法2:遍历tbody数组取第二个元素(备选方案,避免:nth-child的兼容问题) // $tbodies = $html->find('div#content div form div table tbody'); // $nameElement = isset($tbodies[1]) ? $tbodies[1]->find('td:nth-child(1) a', 0) : null; // 提取并输出企业名称 if ($nameElement) { $companyName = $nameElement->plaintext; echo '企业名称:' . $companyName; } else { echo '未找到目标企业名称元素'; }
额外提示
- 目标网站的HTML结构可能会更新,定期检查选择器是否还能匹配到元素。
- 不要高频次请求该网站,避免触发反爬机制导致IP被限制访问。
内容的提问来源于stack exchange,提问作者Australopythecus
相关产品推荐
相关产品推荐

