Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java从html文件中提取文本_Java_Html_Jsoup - Fatal编程技术网

使用java从html文件中提取文本

使用java从html文件中提取文本,java,html,jsoup,Java,Html,Jsoup,我在一个文本爬虫工作,我需要从几个网站提取特定的文本。我使用了jsoup html解析器: Document doc = Jsoup.connect("http://www.aljazeera.net/programs/behindthenews/2014/11/9/%D8%A3%D8%B3%D8%A8%D8%A7%D8%A8-%D9%88%D8%AF%D9%84%D8%A7%D9%84%D8%A7%D8%AA-%D8%A7%D8%B3%D8%AA%D9%85%D8%B1%D8%A7%D8%B1

我在一个文本爬虫工作,我需要从几个网站提取特定的文本。我使用了jsoup html解析器:

Document doc = Jsoup.connect("http://www.aljazeera.net/programs/behindthenews/2014/11/9/%D8%A3%D8%B3%D8%A8%D8%A7%D8%A8-%D9%88%D8%AF%D9%84%D8%A7%D9%84%D8%A7%D8%AA-%D8%A7%D8%B3%D8%AA%D9%85%D8%B1%D8%A7%D8%B1-%D8%A7%D9%84%D8%B5%D8%AF%D8%A7%D9%85-%D8%A8%D8%AC%D8%A7%D9%85%D8%B9%D8%A7%D8%AA-%D9%85%D8%B5%D8%B1").get();
Elements ps = doc.select("p");
String s = Jsoup.parse(ps.text()).text();
PrintWriter out = new PrintWriter("newFile.txt", "UTF-8");
out.write(s);
out.close();
此算法获取一个不需要的文本,需要的文本在此标记下

当我将选择更改为
Elements ps=doc.select(“p dir=rtl”),它返回一个编译错误


有没有办法让它只选择这个想要的标签?

下面的代码将捕获所有的标签:

String uri = URI.create("example.com").toASCIIString();
Document doc = Jsoup.connect(uri).get();
Elements pElements = doc.select("p[dir=rtl]");

StringBuilder sb = new StringBuilder();
for (Element element : pElements) {
    sb.append(element.text());
}

PrintWriter out = new PrintWriter("newFile.txt", "UTF-8");
out.write(sb.toString());
out.close();
唯一棘手的是,您需要使用编码的URL(而不是带有阿拉伯字母的URL)

编辑1:
URL编码可以在代码中完成。

以下代码将捕获所有

标记:

String uri = URI.create("example.com").toASCIIString();
Document doc = Jsoup.connect(uri).get();
Elements pElements = doc.select("p[dir=rtl]");

StringBuilder sb = new StringBuilder();
for (Element element : pElements) {
    sb.append(element.text());
}

PrintWriter out = new PrintWriter("newFile.txt", "UTF-8");
out.write(sb.toString());
out.close();
唯一棘手的是,您需要使用编码的URL(而不是带有阿拉伯字母的URL)

编辑1: URL编码可以在代码中完成

需要的文本在此标记下

您需要使用以下CSS查询:

p/*选择任意p元素*/
[dir=rtl]/*。。。将“dir”属性设置为“rtl”*/
@纳维德沙基巴普尔酒店

上面的url需要编码。我们将使用URI#create helper方法。在返回的
URI
实例上,我们将调用
toasitring
方法

URI uri = URI //
           .create("http://www.aljazeera.net/programs/behindthenews/2014/11/9/أسباب-ودلالات-استمرار-الصدام-بجامعات-مصر") //
           .toASCIIString();
以下是一个工作示例代码:

示例代码 输出(内容剥离) 找到子链接:5 *****

(...) -------------------------

(...) ------------------------- (...)

需要的文本在此标记下

您需要使用以下CSS查询:

p/*选择任意p元素*/
[dir=rtl]/*。。。将“dir”属性设置为“rtl”*/
@纳维德沙基巴普尔酒店

上面的url需要编码。我们将使用URI#create helper方法。在返回的
URI
实例上,我们将调用
toasitring
方法

URI uri = URI //
           .create("http://www.aljazeera.net/programs/behindthenews/2014/11/9/أسباب-ودلالات-استمرار-الصدام-بجامعات-مصر") //
           .toASCIIString();
以下是一个工作示例代码:

示例代码 输出(内容剥离) 找到子链接:5 *****

(...) -------------------------

(...) ------------------------- (...)


您确定网站有

标签吗?我在网页源中找不到该标记。@NavidShakibapour是的,该标记不在主链接中,而是在其子链接中-links@JeffreyBosboom谢谢,这很有帮助,但是你能帮我选择哪种语法吗?因为我不知道该选择哪种语法。你可以更新问题,使其具有你希望的

标记的确切链接吗?你确定该网站有

标记吗?我在网页源中找不到该标记。@NavidShakibapour是的,该标记不在主链接中,而是在其子链接中-links@JeffreyBosboom谢谢,这很有帮助,但是你能帮我选择哪种语法吗?因为我不知道该选择哪种语法。你能更新问题,使其具有你希望的

标记的确切链接吗?