在android中使用jsoup选择器时产生ParseException的nth-child(偶数)?
Posted
技术标签:
【中文标题】在android中使用jsoup选择器时产生ParseException的nth-child(偶数)?【英文标题】:nth-child(even) generating ParseException while using jsoup selector in android? 【发布时间】:2015-10-22 19:38:27 【问题描述】:例外:
org.jsoup.select.Selector$SelectorParseException: Could not parse query 'table:nth-child(even)': unexpected token at ':nth-child(even)
代码:
Document doc = Jsoup.connect(URL+params[0]).userAgent("Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/44.0.2403.125 Safari/537.36")
.referrer("http://www.google.com").get();
Elements questions= doc.select(".content-box table:nth-child(even) a");
content-box 是 div 的类名。
jsoup中nth-child()
方法有什么问题?
nth-child()
在http://try.jsoup.org/ 站点中工作,但在android 中使用时出现异常。
Logcat:
W/System.err(2280): org.jsoup.select.Selector$SelectorParseException: Could not parse query 'table:nth-child(even)': unexpected token at ':nth-child(even)'
W/System.err(2280): at org.jsoup.select.QueryParser.findElements(QueryParser.java:170)
W/System.err(2280): at org.jsoup.select.QueryParser.parse(QueryParser.java:63)
W/System.err(2280): at org.jsoup.select.QueryParser.parse(QueryParser.java:37)
W/System.err(2280): at org.jsoup.select.QueryParser.combinator(QueryParser.java:79)
W/System.err(2280): at org.jsoup.select.QueryParser.parse(QueryParser.java:59)
W/System.err(2280): at org.jsoup.select.QueryParser.parse(QueryParser.java:37)
W/System.err(2280): at org.jsoup.select.Selector.<init>(Selector.java:66)
W/System.err(2280): at org.jsoup.select.Selector.select(Selector.java:79)
W/System.err(2280): at org.jsoup.nodes.Element.select(Element.java:255)
W/System.err(2280): at com.example1.MainScreen$MyTask.doInBackground(MainScreen.java:80)
W/System.err(2280): at com.example1.MainScreen$MyTask.doInBackground(MainScreen.java:1)
W/System.err(2280): at android.os.AsyncTask$2.call(AsyncTask.java:288)
W/System.err(2280): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err(2280): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
W/System.err(2280): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/System.err(2280): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/System.err(2280): at java.lang.Thread.run(Thread.java:841)
【问题讨论】:
你能发布网站的网址吗?您确定在浏览器和应用程序中获得完全相同的结果吗?你在修改应用的UserAgent
吗?
URL: (putlocker.is/search/search.php?q=spider%20man),我在浏览器和应用程序中得到两个不同的结果。在浏览器 (try.jsoup.org) 中,我得到了所有锚标签,但在应用程序中,除了异常之外什么也没有。 UserAgent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36
可以添加下载页面的代码吗?
Document doc = Jsoup.connect(URL+params[0]).userAgent("Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36").referrer("google.com").get();
它对我有用。我已经尝试过您的代码(在AsyncTask
中)并得到类似<a href="http://putlocker.is/watch-the-amazing-spider-man-2-online-free-putlocker-552120.html" title="The Amazing Spider-Man 2 (2014)"><b>The Amazing Spider-M..</b></a>
、<a href="http://putlocker.is/watch-the-amazing-spider-man-2-online-free-putlocker-552120.html" title="The Amazing Spider-Man 2 (2014)"><img src="http://image6.putlocker.is/images/covers/the-amazing-spider-man-2-online-free-putlocker-552120.jpg" border="0" style="padding:1px;border:1px solid silver;" alt="The Amazing Spider-Man 2"></a>
的结果
【参考方案1】:
OP 找到的解决方案:
现在它正在工作,在我更新了 jsuoup.jar 文件 (jsoup.org/packages/jsoup-1.8.2.jar) 之后。我认为这是旧版本的问题。
【讨论】:
以上是关于在android中使用jsoup选择器时产生ParseException的nth-child(偶数)?的主要内容,如果未能解决你的问题,请参考以下文章
Android实战——jsoup实现网络爬虫,糗事百科项目的起步
Android实战——jsoup实现网络爬虫,糗事百科项目的起步