Jsoup – CSS查询选择器问题(?)
我有一个奇怪的问题,我一直在使用Jsoup 1.7.2 ,没有问题,只有现在,当我尝试从这个网站检索主要标题: www.jornaldamarinha.pt ,使用此代码:
// Connecting... Document doc = Jsoup.connect("http://www.jornaldamarinha.pt") .timeout(0) .get(); // "*[class*=zincontent-wrap]" in "Jsoup idiom", means: // Select all tags that contains classes with "zincontent-wrap" on its name. Elements elems = doc.select("*[class*=zincontent-wrap]"); // Retrieves 0 results! int t = elems.size(); Log.w("INFO", "Total Headlines: " + t); // Loop trought all retrieved headlines: for (Element e : elems) { String headline = e.select("a").text().toString(); Log.w("HEADLINE", headline); };
它失败了!…检索0结果。 (应检索~8)
该问题可能是由以下原因引起的:
- 外星人…… (类似于仙女座,但更丑陋…)
- 网站编码。 (我尝试用ISO-8859-15对传入的HTML进行编码,以处理葡萄牙语的特殊字符,但问题仍然存在)
- 格式错误的传入HTML。 (我怀疑这可能是问题,因为选择器在“尝试jsoup在线网页”上工作正常,而且Jsoup通常可以很好地处理损坏的HTML)
- 在类名(“ – ”)中使用减号符号正在弄乱Jsoup。 (对我来说,似乎是问题的主要(或至少一个)原因)
- 别的…… (非常可能!)
但是 ……如果我使用这个CSS查询获取URL: http : //www.jornaldamarinha.pt,请访问 http://try.jsoup.org :
*[class*=zincontent-wrap]
那里的一切都很棒! (检索所有~8个正确结果!)
所以 …要恢复,我所需要的只是完成该网页的function,但使用代码。
感谢,提前,任何光明或解决方法,关于此! 🙂
解决方案!…毕竟,上面代码中的所有内容都正常工作,正如我所怀疑的那样,除了……那个CSS查询在Android的“默认用户代理”上中断了。 我只是认为将“ userAgent ”设置为Jsoup的连接方法非常重要! 所以,我已经按照以下方式编辑了我的代码,并且……现在就像魅力一样! (与http://try.jsoup.org网页中的结果完全相同)
Document doc = Jsoup.connect("http://www.jornaldamarinha.pt") .userAgent("Mozilla/5.0 Gecko/20100101 Firefox/21.0") .timeout(0) .get();
希望这对其他人也有帮助! 🙂
- UUID蓝牙和Android设备
- 错误“由以下引起:java.lang.ClassNotFoundException:”
- Android上的YouTube客户端有java.lang.NullPointerException
- 使用Eclipse构建Android的原生Opencv,给出了“未定义的对`cvCreateFileCapture’的引用”
- 如何将ArrayList从AsyncTask返回到另一个类?
- 将字节数组解码为已用Java压缩的位图
- javax.net.ssl.SSLException:读取错误:ssl = 0x56e63588:系统调用期间的I / O错误,同级连接重置
- 带处理程序的顺序countdowntimer不会正确更新textView
- 根据EditText值更改SeekBar进度