Tag: jsoup

使用Jsoup登录和抓取数据

我想使用Jsoup来抓取只有在我登录时才可用的页面。我想这意味着我需要在一个页面上登录并将cookie发送到另一个页面。 我在这里阅读了一些早期的post并编写了以下代码: public static void main(String[] args) throws IOException { Connection.Response res = Jsoup.connect(“login.yahoo.com”) .data(“login”, “myusername”, “passwd”, “mypassword”) .method(Method.POST) .execute(); Document doc=res.parse(); String sessionId = res.cookie(“SESSIONID”); Document doc2 = Jsoup.connect(“http://health.groups.yahoo.com/group/asthma/messages”) .cookie(“SESSIONID”, sessionId) .get(); Elements Eles=doc2.getElementsByClass(“message”); String content=Eles.first().text(); System.out.println(content); 我的问题是我如何知道我的cookie名称(即“SESSIONID”)在这里发送我的登录信息? 我使用.cookies()方法从登录页面获取所有cookie: 乙 DK YM Ť PH ÿ F 我一个接一个地尝试过,但都没有用。 我可以从其中一些获得sessionId,但是我无法从第二页成功获取节点,这意味着我没有成功登录。有人能给我一些建议吗? 非常感谢!

使用jsoup登录网站

在这个网站上 ,您可以输入您的学生卡号码,然后它将显示该卡上还剩多少钱。 我想使用JSOUP获取信息。 这是我目前的代码,但它不起作用, String url = “http://kortladdning3.chalmerskonferens.se/CardLoad_Order.aspx”; Connection.Response loginForm = Jsoup.connect(url) .method(Connection.Method.GET) .execute(); Document document = Jsoup.connect(url) .userAgent(“Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36”) //.data(“__VIEWSTATE”,”%2FwEPDwUHNjA4NDA1NQ9kFgQCAw9kFgoCAQ9kFgICAQ8PFgIeBFRleHQFClBUTSBLb3J0bnJkZAICDxYCHgdWaXNpYmxlaGQCAw8WAh8BaGQCBA8WAh8BaGQCBQ8WAh8BaBYCAgEPEGRkFgBkAgUPDxYCHwAFCShkZXNrdG9wKWRkZGzBhwMIv3yxqKnC0C7%2BPlC0PlDG”) .data(“__EVENTVALIDATION”, “%2FwEWBAKG7bXPBQLi0uqnCgKF69rWBAK14fOOCgrUt4CBVP4K0VKe0uOPxLSAu26y”) .data(“hiddenIsMobile”, “desktop”) .data(“txtCardNumber”, “3819276248xxxxxx”) .data(“SavedCardNumber”, “”) .data(“btnNext”,”N%C3%A4sta”) .cookies(loginForm.cookies()) .get(); System.out.println(document.html()); 我没有太多的经验,所以我不知道在哪里寻找问题。 一些想法: 我应该使用.post()还是.get() ? 在查看chrome devoloper工具时,post数据是我用.data(.., ..)函数发送的所有数据。 但是如果发送__VIEWSTATE我收到错误,为什么? 我应该发送解密或加密的数据吗? (两者都以chrome devoloper工具呈现)。 […]

Asynctask和doInBackground错误

我已经遵循了一些指南和其他我认为完全正确的问题,但我有一个我无法解决的错误。 反对这条线 private class loadNotams extends AsyncTask { 我收到了这个错误 MainActivity.loadNotams类型必须实现inheritance的抽象方法AsyncTask.doInBackground(String …) 并反对这条线 protected Void doInBackground(String airfield) { 我收到此错误: MainActivity.loadNotams类型的方法doInBackground(String)必须覆盖或实现超类型方法 这里的任何想法都是我的全部代码: import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import android.os.AsyncTask; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.TextView; public class MainActivity extends Activity { TextView testText; Notam[] notamList = new Notam[100]; @Override protected […]

jsoup:从1.7.3更新到1.8.1后有不同的结果,如何避免这种情况?

从jsoup 1.7.3更新到1.8.1后,我得到了不同的结果。 在1.7.3中,title属性被返回转义,与输入相同,在1.8.1中br被转换为标签。 有没有办法可以避免这种行为? String content = “TestTest”; Document document = Jsoup.parseBodyFragment(content); document.outputSettings().charset(Charset.forName(“ASCII”)); //$NON-NLS-1$ System.out.println(document.body().html()); 结果: // 1.7.3 TestTest // 1.8.1 <a href="javascript:openObj('Classifier_UUID')" title="TestTest”>TestTest

知道要发送到服务器的标头

在这个网站上 ,您可以输入您的学生卡号码,然后它会显示卡上还剩多少钱。 是否可以在java中使用,例如使用JSOUP? 在将卡号发送到服务器时,如何知道我应该使用哪个标题? 当我使用chromes开发人员工具时,我会获得有关此标题的信息 Remote Address:95.80…. Request URL:http://kortladdning3.chalmerskonferens.se/CardLoad_Order.aspx Request Method:GET Status Code:200 OK Response Headers view source Cache-Control:private Content-Length:6807 etc… 我可以用某种方式使用这些信息吗? 基本上我想要的是使用JAVA获得多少钱。 编辑: 这是我目前的代码: res = Jsoup.connect(url) .userAgent(“Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36”) .data(“txtCardNumber”, “3819xxxxxxxxxx”) .data(“__VIEWSTATE”, “balbalblaonglong”) .data(“__EVENTVALIDATION”, “/wEWBAKG7bXPBQLi0uqnCgKF69rWBAK14fOOCgrUt4CBVP4K0VKe0uOPxLSAu26y”) .data(“hiddenIsMobile”, “desktop”) .cookie(“ASP.NET_SessionId”, “kcvawxel4bzg3yqotr22b1ig”) .method(Method.GET) .execute(); 这给了我这个错误: HTTP […]

使用JAVA将window.open(超链接)Javascript代码转换为纯绝对URL

我在JAVA Jsoup Library的网站上工作,以提取一些超链接 Document doc = Jsoup.connect(“http://www.saudisale.com/SS_a_mpg.aspx”).get(); Elements script = doc.select(“script”) ; for(Element elementary :doc.select(“table”)) { System.out.println(“”+elementary.select(“tbody”).select(“tr”).select(“td”).select(“input”).attr(“onClick”)+””); 样本输出: – window.open(‘http://saudisale.com/arPrivatePage.aspx?id=21871638′,’_blank’,’channelmode =1,scrollbars=1,status=0,titlebar=0,toolbar=0,resizable=1′); window.open(‘http://saudisale.com/arPrivatePage.aspx?id=21871638′,’_blank’,’channelmode =1,scrollbars=1,status=0,titlebar=0,toolbar=0,resizable=1′); window.open(‘http://saudisale.com/arPrivatePage.aspx?id=21871638′,’_blank’,’channelmode =1,scrollbars=1,status=0,titlebar=0,toolbar=0,resizable=1′); window.open(‘http://ads.saudisale.com/dyaralez.html ‘,’_blank’,’channelmode =1,scrollbars=1,status=0,titlebar=0,toolbar=0,resizable=1′); window.open(‘http://ads.saudisale.com/dyaralez.html ‘,’_blank’,’channelmode =1,scrollbars=1,status=0,titlebar=0,toolbar=0,resizable=1′); window.open(‘http://ads.saudisale.com/dalel.html’,’_blank’,’channelmode =1,scrollbars=1,status=0,titlebar=0,toolbar=0,resizable=1′); window.open(‘http://ads.saudisale.com/dalel.html’,’_blank’,’channelmode =1,scrollbars=1,status=0,titlebar=0,toolbar=0,resizable=1′); window.open(‘SS_a_car.aspx?carid=37240′,’_blank’,’channelmode =1,scrollbars=1,status=0,titlebar=0,toolbar=0,resizable=1′); window.open(‘SS_a_car.aspx?carid=37240′,’_blank’,’channelmode =1,scrollbars=1,status=0,titlebar=0,toolbar=0,resizable=1′); 基于Jsoup不支持javascript的事实,所以我必须做一些手动java代码将window.open(超链接)javascript代码转换为绝对超链接 例如,必须转换以下输出JavaScript代码 window.open(‘http://saudisale.com/arPrivatePage.aspx?id=21871638′,’_blank’,’channelmode=1,scrollbars=1,status=0,titlebar=0,toolbar=0,resizable=1′) 致: http : //saudisale.com/arPrivatePage.aspx?id = 21871638 和 window.open(‘SS_a_car.aspx?carid=37149′,’_blank’,’channelmode =1,scrollbars=1,status=0,titlebar=0,toolbar=0,resizable=1′); 致http://www.saudisale.com/SS_a_car.aspx?carid=37149 有人可以指导我如何用JAVA完成这项任务吗?

为什么JSOUP不读为UTF-8?

我希望jsoup解析为utf -8,但我不能。 我尝试了我所知道的一切,并在谷歌搜索。 我的目标是什么: String tmp_html_content =”Öç”; InputStream is = new ByteArrayInputStream(tmp_html_content.getBytes()); Document doc_tbl = Jsoup.parse(is, “UTF-8”, “”); doc_tbl.outputSettings().charset().forName(“UTF-8”); doc_tbl.outputSettings().escapeMode(EscapeMode.xhtml); 但是doc_tbl不是UTF-8 。 请帮忙

如何解析表格第3列的单元格?

我试图使用Jsoup解析 的第3列的单元格。 这是HTML: Linje Destination Nästa tur (min)   Därefter   1 Hovshaga Kurortsv.55 — 1 Hovshaga via Resecentrum21 — 1 Teleborg5 45 这是我的代码尝试抛出NullPointerException : URL url = null; try { url = new URL(“http://wap.nastabuss.se/its4wap/QueryForm.aspx?hpl=Teleborg+C+(V%C3%A4xj%C3%B6)”); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(“1”); Document doc = null; try { System.out.println(“2”); […]

单击按钮以使其可见后解析HTML表

我正在开发一个Java程序,它需要在启动时从网站读取数据。 有问题的网站是这样的: http : //bitcoincharts.com/charts/btceUSD#rg10zigHourlyztgSzm1g10zm2g25zv 要访问所需的表,页面底部附近有一个标题为“加载原始数据”的按钮。 单击时,将显示包含所需信息的表。 虽然我以前从未这样做过,但我相信我可以轻松地学习如何解析表格并将其放入某些数组中。 然而,我无法弄清楚的是如何让我的程序“点击”该按钮以使表格显示。 我该怎么做呢? 编辑:这是我现在正在使用的。 目前这打印绝对没有,我怀疑这是因为jsoup没有看到表,因为“加载原始数据”按钮没有被“点击”。 for (Element table : doc.select(“table[id=chart_table]”)) { for (Element row : table.select(“tr:gt(2)”)) { Elements tds = row.select(“td:not([rowspan])”); for (Element element : tds) { System.out.println(element); } } }

如何防止jsoup转换特殊字符?

请看下面的简化示例: public static void main(String[] args) { String html = “\n” + ” \n” + ” \n” + ” \n” + ” 2 <= X \n” + ” \n” + ” \n” + “”; Document doc = Jsoup.parse(html); System.out.println(doc.select(“p”).outerHtml()); } 这打印出 2 <= X 但我希望所选的html部分打印出来: 2 <= X 。 我怎么能告诉jsoup不要转换'<'符号?