웹 페이지를 크롤링하고 크롤링 한 다음 해당 웹 페이지의 모든 링크를 추출한 다음 Apache Tika 및 BoilerPipe를 사용하여 모든 URL을 구문 분석하려고합니다. 아주 잘 파싱하지만, 어떤 사람들은 이렇게 오류가납니다. 그리고 그것은 HTMLParser.java에 대한 몇 가지 오류를 보여줍니다 행 번호 (102)이 내가 또한 HTMLParse 코드를 제공 한 Apache Tika에서 HTML 문제 분석하기
String parsedText = tika.parseToString(htmlStream, md);
HTMLParser.java
에 줄 번호 (102)이다.org.apache.tika.exception.TikaException: TIKA-198: Illegal IOException from [email protected]
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:203)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:197)
at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:135)
at org.apache.tika.Tika.parseToString(Tika.java:357)
at edu.uci.ics.crawler4j.crawler.HTMLParser.parse(HTMLParser.java:102)
at edu.uci.ics.crawler4j.crawler.WebCrawler.handleHtml(WebCrawler.java:227)
at edu.uci.ics.crawler4j.crawler.WebCrawler.processPage(WebCrawler.java:299)
at edu.uci.ics.crawler4j.crawler.WebCrawler.run(WebCrawler.java:118)
at java.lang.Thread.run(Unknown Source)
Caused by: java.util.zip.ZipException: invalid block type
at java.util.zip.InflaterInputStream.read(Unknown Source)
at java.util.zip.ZipInputStream.read(Unknown Source)
at java.io.FilterInputStream.read(Unknown Source)
at org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource$FakeZipEntry.<init>(ZipInputStreamZipEntrySource.java:114)
at org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource.<init>(ZipInputStreamZipEntrySource.java:55)
at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:82)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:220)
at org.apache.poi.extractor.ExtractorFactory.createExtractor(ExtractorFactory.java:152)
at org.apache.tika.parser.microsoft.ooxml.OOXMLExtractorFactory.parse(OOXMLExtractorFactory.java:65)
at org.apache.tika.parser.microsoft.ooxml.OOXMLParser.parse(OOXMLParser.java:67)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:197)
... 8 more
이
는 어떤 제안을 이해할 수있을 것이다 나의 HTMLParser.java 파일 -public void parse(String htmlContent, String contextURL) {
InputStream htmlStream = null;
text = null;
title = null;
metaData = new HashMap<String, String>();
urls = new HashSet<String>();
char[] chars = htmlContent.toCharArray();
bulletParser.setCallback(textExtractor);
bulletParser.parse(chars);
try {
text = articleExtractor.getText(htmlContent);
} catch (BoilerpipeProcessingException e) {
e.printStackTrace();
}
if (text == null){
text = textExtractor.text.toString().trim();
}
title = textExtractor.title.toString().trim();
try {
Metadata md = new Metadata();
String utfHtmlContent = new String(htmlContent.getBytes(),"UTF-8");
htmlStream = new ByteArrayInputStream(utfHtmlContent.getBytes());
//The below line is at the line number 102 according to error above
String parsedText = tika.parseToString(htmlStream, md);
//very unlikely to happen
if (text == null){
text = parsedText.trim();
}
processMetaData(md);
} catch (Exception e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(htmlStream);
}
bulletParser.setCallback(linkExtractor);
bulletParser.parse(chars);
Iterator<String> it = linkExtractor.urls.iterator();
String baseURL = linkExtractor.base();
if (baseURL != null) {
contextURL = baseURL;
}
int urlCount = 0;
while
(it.hasNext()) {
String href = it.next();
href = href.trim();
if (href.length() == 0) {
continue;
}
String hrefWithoutProtocol = href.toLowerCase();
if (href.startsWith("http://")) {
hrefWithoutProtocol = href.substring(7);
}
if (hrefWithoutProtocol.indexOf("javascript:") < 0
&& hrefWithoutProtocol.indexOf("@") < 0) {
URL url = URLCanonicalizer.getCanonicalURL(href, contextURL);
if (url != null) {
urls.add(url.toExternalForm());
urlCount++;
if (urlCount > MAX_OUT_LINKS) {
break;
}
}
}
}
}
입니다.
문제가 무엇인지 잘 모르겠지만 디버거를 실행하고 htmlContent를 검사하거나 적어도 로그하면 문제를 쉽게 디버깅 할 수 있다고 생각합니다. 이것은 콘텐츠에 이상이 있는지 여부에 대한 단서를 제공 할 수 있습니다. –
tika 버전의 일부 문제 ?? 위의 경우 Apache Tika 0.9를 사용하고 poi3.7에 따라 다릅니다. 그래서 org.apache.poi에 문제가 있다고 가정하고 있습니다. [http://comments.gmane.org/gmane.comp.apache.tika.user/543](http://comments.gmane.org/gmane). comp.apache.tika.user/543) – ferhan
그리고 tika 버전을 0.9에서 1.0으로 업그레이드했을 때 나는 이와 같이 다른 오류가 나기 시작했습니다. org.apache.tika.exception.TikaException : TIKA-198 : org.apache.tika.parser.pkg.PackageParser에서 IOException이 잘못됨 @ 4fd30479' – ferhan