标签: jsoup

如何从JSoup'Document'中删除不间断的空格?

我该如何删除这些:

<td>&nbsp;</td>
Run Code Online (Sandbox Code Playgroud)

要么

<td width="7%">&nbsp;</td>
Run Code Online (Sandbox Code Playgroud)

来自我的JSoup'文档'?我尝试了很多方法,但是这些不间断的空格字符与普通的JSoup表达式或选择器不匹配.

html java html-entities jsoup

6
推荐指数
1
解决办法
6762
查看次数

处理连接错误和JSoup

我正在尝试创建一个应用程序来从网站上的多个页面中删除内容.我正在使用JSoup进行连接.这是我的代码:

for (String locale : langList){
        sitemapPath = sitemapDomain+"/"+locale+"/"+sitemapName;
        try {
            Document doc = Jsoup.connect(sitemapPath)
                    .userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21")
                    .timeout(10000)
                    .get();

            Elements element = doc.select("loc");   
            for (Element urls : element) {
                System.out.println(urls.text());
                }
        } catch (IOException e) {
            System.out.println(e);
        }
    }
Run Code Online (Sandbox Code Playgroud)

一切都在大部分时间都很完美.但是,我希望能够做一些事情.

首先,有时404状态将返回或500状态可能是301.使用下面的代码,它将只打印错误并移动到下一个URL.我希望能够做的是尝试返回所有链接的url状态.如果页面连接打印200,如果不打印相关的状态代码.

其次我有时会发现这个错误"java.net.SocketTimeoutException:read timed out"我可以增加我的超时但是我宁愿尝试连接3次,在第3次失败时我想将URL添加到"失败"数组所以我可以在将来重试失败的连接.

知识比我更多的人可以帮助我吗?

java connection jsoup

6
推荐指数
2
解决办法
2万
查看次数

如何使用JAVA从html页面获取表格

我正在开展一个项目,我试图从互联网上获取财务报表,并在JAVA应用程序中使用它们来自动创建比率和图表.

我使用的网站使用登录名和密码来访问表.
标签是TBODY,但html中有另外两个TBODY.

如何使用java将我的表打印到txt文件,然后我可以在我的应用程序中使用?最好的方法是什么,我应该阅读什么?

java arrays html-parsing jsoup

6
推荐指数
1
解决办法
3万
查看次数

一种估计或预测一大块HTML的Jsoup处理时间的方法?

我在Jsoup中处理的一些网页很重."重"是指页面要么包含大量HTML(假设页面已经下载了),要么在同一文档上需要多次迭代(通过Jsoup.parse()只创建一次).

出于这个原因,我想向用户呈现一个进度条,其中包含对剩余时间的猜测.

一种方法是仅测量HTML的量(以KB或MB为单位)并提出速度因子(遗憾的是,完全取决于此代码运行的系统的速度).

另一种方法是计算节点数量

由于这种明显的不确定性,我是在呼唤麻烦吗?

有更好的方法处理这个的想法?

optimization performance jsoup

6
推荐指数
1
解决办法
1148
查看次数

使用jsoup解析HTML并保留原始内容

我想替换HTML文件中的一些元素,保持所有其他内容不变.

Document doc = Jsoup.parse("<div id=title>Old</div >\n" +
        "<p>1<p>2\n" +
        "<table><tr><td>1</td></tr></table>");
doc.getElementById("title").text("New");
System.out.println(doc.toString());
Run Code Online (Sandbox Code Playgroud)

我希望有以下输出:

<div id=title>New</span></div >
<p>1<p>2
<table><tr><td>1</td></tr></table>
Run Code Online (Sandbox Code Playgroud)

相反,我有:

<html>
 <head></head>
 <body>
  <div id="title">New</div>
  <p>1</p>
  <p>2 </p>
  <table>
   <tbody>
    <tr>
     <td>1</td>
    </tr>
   </tbody>
  </table>
 </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Jsoup补充说:

  1. 关闭p标签
  2. 双引号属性值
  3. TBODY
  4. HTML,头部和身体元素

我可以将修改后的HTML序列化为原始版本吗?杰里科做到了这一点,但它没有像Jsoup那样提供灵活的DOM操作方法.

java parsing html-parsing jsoup

6
推荐指数
1
解决办法
2238
查看次数

如何使用selector-syntax Jsoup通过ID的子字符串查找元素?

我使用Jsoup从URL获取页面.我可以使用以下代码行提取某些id的链接:

Elements links = doc.select("a[href]#title0"); 
Run Code Online (Sandbox Code Playgroud)

如果我只知道其ID的一部分,例如'title',我该如何找到这些元素.我知道我可以找到所有与href 链接,然后遍历'链接'并检查它的id是否包含'title'子字符串,但是我想避免这种方法.有没有办法过滤选择器中的链接,并检查它的id是否包含'title'子串?

java regex android jsoup

6
推荐指数
1
解决办法
3209
查看次数

如何在具有lazyload scrollLoader.js的站点中使用Jsoup

我有一个关于jsoup的问题,因为lazyload scrollLoader.js我用java代码到达网站,我只列出了50个图像名称jsoup.But在网站上向下滚动时,很多图像不断加载.我的问题是,是否可以将图像数量发布到用于Jsoup.connect() 从网站获取所有图像的网址?

这是网站:http://www.logowik.com

这是网站中脚本的用法:

<script type="text/javascript">

            $(document).ready(function(e) {
                CalculateColumns();
                recordCount = 50;
                groupID = "0";
                catID = "0";
                query = "";
                userEntry = "";
                groupInterval = "0";
                AddEvent(window, "resize", CalculateColumns);
                document["scrollLoader"] = new scrollLoader({evn : getGrids, seize : 1});
                document["scrollLoader"].DoScroll();
                addLogoClickEvent();
            });


    </script>
Run Code Online (Sandbox Code Playgroud)

我用url发布这个参数: http://www.logowik.com/index.php?g=1&groupID=1&catID=0 用这个url我得到50个图像,因为recordCount = 50in script.但我无法将此参数发布到网址.为了获得100张图片,我尝试了这个网址: http://www.logowik.com/index.php?recordCount=100&g=1&groupID=1&catID=0 但它没有效果.

谢谢

javascript java url post jsoup

6
推荐指数
1
解决办法
1021
查看次数

Jsoup如何输出格式良好的XML?

当Jsoup遇到某些类型的HTML(复杂或不正确)时,它可能会发出格式错误的HTML.一个例子是:

<html>
 <head>
  <meta name="x" content="y is "bad" here">
 </head>
 <body/>
</html>
Run Code Online (Sandbox Code Playgroud)

引号应该被转义的地方.当Jsoup解析它时,它会发出:

<html>
 <head>
  <meta name="x" content="y is " bad"="" here"="" />
 </head>
 <body></body>
</html>
Run Code Online (Sandbox Code Playgroud)

这不符合HTML或XML.这是有问题的,因为它将在链的下一个解析器中失败.

有没有办法确保Jsoup发出错误消息或(如HtmlTidy)可以输出格式良好的XML,即使它已经丢失了一些信息(毕竟我们现在无法确定什么是正确的).

更新:失败的代码是:

    @Test
public void testJsoupParseMetaBad() {
    String s = "<html><meta name=\"x\" content=\"y is \"bad\" here\"><body></html>";
    Document doc = Jsoup.parse(s);
    String ss = doc.toString();
        Assert.assertEquals("<html> <head> <meta name=\"x\" content=\"y is \""
            +" bad\"=\"\" here\"=\"\" /> </head> <body></body> </html>", ss);
}
Run Code Online (Sandbox Code Playgroud)

我在用:

    <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.7.2</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

其他人似乎有同样的问题: JSoup - 内部属性引用答案那里没有帮助我,因为我必须接受我给予的

html xml jsoup

6
推荐指数
1
解决办法
1861
查看次数

错误原因 - Jsoup.isValid

我有以下代码可以工作,但我只是想知道在Jsoup中是否有可能找出错误的确切原因.

以下返回true(如预期的那样)

private void validateProtocol() {
        String html = "<p><a href='https://example.com/'>Link</a></p>";

        Whitelist whiteList = Whitelist.basic();
        whiteList.addProtocols("a","href","tel");
        whiteList.removeProtocols("a","href","ftp");
        boolean safe = Jsoup.isValid(html, whiteList);
        System.out.println(safe);
    }
Run Code Online (Sandbox Code Playgroud)

当我将上面的字符串更改为它返回false(按预期)

String html = "<p><a href='ftp://example.com/'>Link</a></p>";
Run Code Online (Sandbox Code Playgroud)

现在,当我有以下代码时,有两个错误,一个是无效协议,一个是onfocus()链接.

private void validateProtocol() {
            String html = "<p><a href='ftp://example.com/' onfocus='invalidLink()'>Link</a></p>";

            Whitelist whiteList = Whitelist.basic();
            whiteList.addProtocols("a","href","tel", "device");
            whiteList.removeProtocols("a","href","ftp");
            boolean safe = Jsoup.isValid(html, whiteList);
            System.out.println(safe);
        }
Run Code Online (Sandbox Code Playgroud)

结果是假的,但有没有办法弄清楚URL的哪一部分是假的?例如 - 错误的协议或错误的方法..?

java jsoup

6
推荐指数
1
解决办法
817
查看次数

防止JSOUP取消编码属性值

我有代码,有点像这样

String str = "<element data=\"some &lt;data&gt;\"> &gt;foo&lt; </element>";

Document doc = Jsoup.parse(str, "", Parser.xmlParser());
Run Code Online (Sandbox Code Playgroud)

但JSOUP取消了数据的价值,产生了类似的东西

<element value="some <data>">
  &gt;foo&lt;
</element>
Run Code Online (Sandbox Code Playgroud)

如何防止JSOUP取消编码属性值?

jsoup

6
推荐指数
1
解决办法
90
查看次数