이 웹 사이트에서 내용을 추출하고 싶습니다. https://it.projektwerk.com/de/projects/javax.xml.xpath에 대한 XPath 표현이 작동하지 않습니다.
내가 XPath 식을 가지고 : .//*[@id='content_0']/H3/A
이 -
이 유효한 XPath 식입니다 (대문자 내 문서 파서로, 정확합니다> org.cyberneko.html ... 그 대문자 사람에 태그를 구문 분석) ; FirePath를 사용하여 콘텐츠를 가져올 수 있습니다. 그러나 javax.xml.xpath
클래스를 사용하면 검색이 불가능합니다. 나는 이런 식으로 일을 해요 :
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression expr = xpath.compile(exprString);
Node node = expr.evaluate(doc, XPathConstants.NODE);
하지만 node
항상 null
입니다. 그
희망 누군가가 도움이 될 수 있습니다 (예를 들어, .//*[@id='p_p_id']/DIV/DIV/DIV/DIV[3]/A/H3/SPAN
)가 작동 중이 동일한 구문의 다른 표현으로 다른 웹 사이트가있는 한
나는이 작업을하지 않습니다.
일반적으로 HTML 요소는 HTML 네임 스페이스, 즉 URI가 http : // www.w3.org/ 1999/xhtml 인 네임 스페이스에 있습니다. [xpath.setNamespaceContext]를 호출해야합니다 (http://docs.oracle.com/javase/8/docs/api/javax/xml/xpath/XPath.html#setNamespaceContext-javax.xml.namespace.NamespaceContext-) 네임 스페이스를 XPath 엔진에 알리려면 표현식을'.//*[@ id = 'content_0']/html : H3/html : A'와 같이 변경하십시오. – VGR
VGR 덕분에 해결책을 찾는데 도움이되었습니다. 자세한 내용은 내 대답을 참조하십시오. – eSKape