我已经知道图像的位置了,但为了简单起见,我想用JSoup本身下载图像.(这是为了简化获取cookie,推荐人等)
这是我到目前为止:
//Open a URL Stream
Response resultImageResponse = Jsoup.connect(imageLocation).cookies(cookies).ignoreContentType(true).execute();
// output here
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(new java.io.File(outputFolder + name));
//BufferedWriter out = new BufferedWriter(new FileWriter(outputFolder + name));
out.write(resultImageResponse.body()); // resultImageResponse.body() is where the image's contents are.
out.close();
Run Code Online (Sandbox Code Playgroud) 正在进行一些与向jsoup https://github.com/jhy/jsoup/pull/80添加xpath支持相关的工作.
我试图选择,使用Jsoup,<div>有多个类:
<div class="content-text right-align bold-font">...</div>
Run Code Online (Sandbox Code Playgroud)
根据我的理解,这样做的语法应该是:
document.select("div.content-text.right-align.bold-font");
Run Code Online (Sandbox Code Playgroud)
但是,出于某种原因,这对我不起作用.
当我在JSFIDDLE上尝试相同的语法时,它可以毫无障碍地工作.
多类选择在Jsoup中有效吗?
(我宁愿发现这是我的代码中的一个错误,而不是发现这是一个Jsoup限制:)
更新(感谢下面的答案):Jsoup与上述语法完美配合.
当我尝试打开一个用jsoup解析的链接时,我收到一个错误.
连接命令:
Document doc = Jsoup.connect("http://www.rfi.ro/podcast/emisiune/174/feed.xml")
.timeout(10 * 1000).get();
Run Code Online (Sandbox Code Playgroud)
抛出的错误:
Exception in thread "main" org.jsoup.UnsupportedMimeTypeException: Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml. Mimetype=application/rss+xml; charset=utf-8, URL=http://www.rfi.ro/podcast/emisiune/174/feed.xml
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:453)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:410)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:164)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:153)
at podcast.Pods.main(Pods.java:41)
Run Code Online (Sandbox Code Playgroud) 页面上的一个块由JavaScript填充内容,在使用Jsoup加载页面后,没有任何信息.有没有办法在解析页面时获取JavaScript生成的内容Jsoup?
无法粘贴页面代码,因为它太长了:http://pastebin.com/qw4Rfqgw
这是我需要的内容元素: <div id='tags_list'></div>
我需要用Java获取这些信息.最好使用Jsoup.元素是JavaScript的帮助领域:
<div id="tags_list">
<a href="/tagsc0t20099.html" style="font-size:14;">?????????</a>
<a href="/tagsc0t1879.html" style="font-size:14;">Sr</a>
<a href="/tagsc0t3140.html" style="font-size:14;">??????????????</a>
</div>
Run Code Online (Sandbox Code Playgroud)
Java代码:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
public class Test
{
public static void main( String[] args )
{
try
{
Document Doc = Jsoup.connect( "http://www.bestreferat.ru/referat-32558.html" ).get();
Elements Tags = Doc.select( "#tags_list a" );
for ( Element Tag : Tags )
{
System.out.println( Tag.text() );
}
}
catch ( IOException e )
{ …Run Code Online (Sandbox Code Playgroud) 这是HTML结构:

Element link = doc.select("div.subtabs p").first();
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.我该如何选择p?
我试图使用jsoup解析HTML.这是我第一次使用jsoup,我也阅读了一些教程.下面是我试图解析的HTML表格 -
如果你看到我的下表,它tr现在有三个(为了理解目的,我将它缩短为有三个表行,但一般情况下会更多).现在我想Cluster Name从我的下表中提取并且它是相应的host name,例如 - 我将提取Titan为集群名称及其状态为down的所有主机名.
正如你可以看到下面的Titan群集名称,我有两个主机名machineA.abc.com和machineB.abc.com其machineA地位up,但machineB地位down.
因此,我将打印Titan为群集名称,并打印出machineB.abc.com主机名,因为它已关闭.这可以用jsoup吗?
<table border=1>
<tr>
<td> </td>
<td> </td>
<td>Alert</td>
<td>Cluster Name</td>
<td>IP addr</td>
<td>Host Name</td>
<td>Type</td>
<td>Status</td>
<td>Free</td>
<td>Version</td>
<td>Restart Time</td>
<td>UpTime(Days)</td>
<td>Last probed</td>
<td>Last up</td>
</tr>
<tr bgcolor="ffffff">
<td><a href=showlog?ip_addr=127.0.0.1>Hist</a></td>
<td><a href=http://127.0.0.1:8080/test?full=y>VI</a></td>
<td bgcolor="ffffff"> </td>
<td>Titan</td>
<td>10.100.111.77</td>
<td>machineA.abc.com</td>
<td></td>
<td bgcolor="ffffff">up</td>
<td bgcolor="ffffff" align=right>88%</td>
<td bgcolor="ffffff">2.0.5-SNAPSHOT</td>
<td bgcolor="ffffff">2014-07-04 …Run Code Online (Sandbox Code Playgroud) 我将通过jsoup连接到一个url并获取它的所有内容,但事情是如果我选择喜欢,
doc.select("body")
Run Code Online (Sandbox Code Playgroud)
它返回一个元素,但我想获取页面中的所有元素并逐个迭代它们,例如,
<html>
<head><title>Test</title></head>
<body>
<p>Hello All</p>
<a href="test.html">Second Page</a>
<div>Test</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如果我选择使用正文,我会在单行中得到结果,如:
Test Hello All Second Page Test
Run Code Online (Sandbox Code Playgroud)
相反,我想选择所有元素并逐个迭代并产生结果,如,
Test
Hello All
Second Page
Test
Run Code Online (Sandbox Code Playgroud)
使用jsoup会有可能吗?
谢谢,
Karthik
我正在<script>通过使用来清除不需要的HTML标记(例如)中的一些文本
String clean = Jsoup.clean(someInput, Whitelist.basicWithImages());
Run Code Online (Sandbox Code Playgroud)
问题是,它取代例如å用å(这会导致麻烦的我,因为它不是"纯XML").
例如
Jsoup.clean("hello å <script></script> world", Whitelist.basicWithImages())
Run Code Online (Sandbox Code Playgroud)
产量
"hello å world"
Run Code Online (Sandbox Code Playgroud)
但我想
"hello å world"
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法来实现这一目标?(比转换å回å结果更简单.)
我正在尝试将数据发布到网站上,使用Jsoup登录网站,但它不起作用?
我正在尝试代码
Document docs = Jsoup.connect("http://some.com/login")
.data("cmd", "login","username", "xxxx","password", "yyyyy")
.referrer("http://some.com/login/").post();
Run Code Online (Sandbox Code Playgroud)
这里是在pagesource中提供正常的登录页面
我也尝试过代码
Document docs = (Document) Jsoup.connect("http://some.com/login")
.data("cmd", "login","username", "xxxx","password", "yyyyy")
.referrer("http://some.com/login/").method(Method.POST).execute().parse();
Run Code Online (Sandbox Code Playgroud)
这里也是在pagesource中再次登录的正常页面.
任何有关相同的建议将非常感谢!!
谢谢....