code4craft / webmagic

A scalable web crawler framework for Java.
http://webmagic.io/
Apache License 2.0
11.37k stars 4.18k forks source link

如何在PageProcessor.process中,将page.getHtml()的内容传入至Xpath2Selector #1135

Closed Admin0x002 closed 9 months ago

Admin0x002 commented 9 months ago

process中使用

page.putField("content", Xpath2Selector
    .newInstance("//table[@id='comTab']/tbody/tr[1]/td[2]/text()")
    .selectList(page.getHtml().get())
);

会获取不到数据,相同的xpath写在以下内容中则可以获取到

String html = "<table id=\"comTab\" style=\"width:100%;\"><tbody><tr><th style=\"width:10%;\">名称:</th><td style=\"width:40%;\">有限公司</td><th style=\"width:10%;\">性质:</th><td style=\"width:40%;\">民营</td></tr><tr><th>规模:</th><td>50~100人</td><th>行业:</th><td>服务业</td></tr><tr><td colspan=\"4\">&nbsp;</td></tr><tr><th>性质:</th><td>全职</td><th>类别:</th><td>人员</td></tr><tr><th>要求:</th><td>本科</td><th>人数:</th><td>200</td></tr><tr><th>工作地点:</th><td colspan=\"3\">北京市石景山区</td></tr><tr><th>职位标签:</th><td></td></tr></tbody></table>";

page.putField("content", Xpath2Selector
    .newInstance("//table[@id='comTab']/tbody/tr[1]/td[2]/text()")
    .selectList(html)
);

使用的版本是0.9.1

Admin0x002 commented 9 months ago

找到问题了,是因为抓取到的html中,指定了命名空间的原因