java - org.jsoup.select.Selector$SelectorParseException: 无法解析查询'': '' 处的意外标记
问题描述
我正在构建网络爬虫。我试图改进这段代码:
for (int i = 1; i < 6; i++) {
Elements siteElements = document.select("div.grid__col.grid__col--20-80-80.b-products-wrap > ul > li:nth-child(" + i + ")");
System.out.println(siteElements.select(" > div > div.b-products-list__desc-wrap > div > div.b-products-list__main-content > div.b-products-list__desc-prime > div.b-products-list__manufacturer-holder").select("a").first().text());
System.out.println(siteElements.select(" > div > div.b-products-list__desc-wrap > div > div.b-products-list__main-content > div.b-products-list__desc-prime > div.b-products-list__title-holder > a").first().text());
System.out.println(siteElements.select(" div.b-products-list__price-holder > a").first().text());
System.out.println(siteElements.first().attr("data-ppc-id"));
}
至此代码(不要介意最后一行,我知道改进后它是错误的)。所以我参加了3人之间共享的部分sys.out
> div > div.b-products-list__desc-wrap > div > div.b-products-list__main-content >
并将其放入siteElements
变量中(顺便说一句。这个变量的名字好吗?)
for (int i = 1; i < 6; i++) {
Elements siteElements = document.select("div.grid__col.grid__col--20-80-80.b-products-wrap > ul > li:nth-child(" + i + ") > div > div.b-products-list__desc-wrap > div > div.b-products-list__main-content >");
System.out.println(siteElements.select(" div.b-products-list__desc-prime > div.b-products-list__manufacturer-holder").select("a").first().text());
System.out.println(siteElements.select(" div.b-products-list__desc-prime > div.b-products-list__title-holder > a").first().text());
System.out.println(siteElements.select(" div.b-products-list__price-holder > a").first().text());
//System.out.println(siteElements.first().attr("data-ppc-id"));
}
但后来我得到了例外:
Exception in thread "main" org.jsoup.select.Selector$SelectorParseException: Could not parse query '': unexpected token at ''
at org.jsoup.select.QueryParser.findElements(QueryParser.java:206)
at org.jsoup.select.QueryParser.parse(QueryParser.java:59)
at org.jsoup.select.QueryParser.parse(QueryParser.java:42)
at org.jsoup.select.QueryParser.combinator(QueryParser.java:87)
at org.jsoup.select.QueryParser.parse(QueryParser.java:67)
at org.jsoup.select.QueryParser.parse(QueryParser.java:42)
at org.jsoup.select.Selector.select(Selector.java:91)
at org.jsoup.nodes.Element.select(Element.java:363)
at Main.main(Main.java:23)
我做错了什么?我从中抓取数据的网站:https : //merlin.pl/bestseller/ ?option_80=10349074
解决方案
您不能以 结束选择器>
,因为这需要另一个选择器有效。只需删除它或使用> *
或类似的东西,你就不会得到这个例外。也许您必须进一步调整选择器以获得所需的元素。
推荐阅读
- c# - 我如何使用硒移动这些数字
- bash - Ansible 执行脚本时跳过 shell 命令
- c# - C# 列表 - 删除重复项
- swift - 点击一个 ImageView 并打开一个 TableViewController
- vb.net - 带有孙子节点的vb.net树视图人口问题
- webpack - Webpack:根据条目名称设置我的资产的路径
- javascript - 无法读取 null 的属性“getElementsByClassName” - 我可以使用“if”语句强制它吗?
- node.js - 在 Node 中有效地共享项目
- android - 更改 RecyclerView 中单个单元格/项目的背景
- ruby-on-rails - 如何从 ruby on rails 模型添加到数据库列数组中?