java爬虫问题二: 使用jsoup爬取数据class选择器中空格多选择怎么解决

问题描述:

在使用jsoup爬取其他网站数据的时候,发现class是带空格的多选择,如果直接使用doc.getElementsByClass(“class的值”),这种方法获取不到想要的数据。

爬取网站页面结构如下:

 

timg?pacompress&imgtype=0&sec=1439619614&autorotate=1&di=4c69f8b6b18826373bfa8ba402453b64&quality=90&size=b870_10000&src=http%3A%2F%2Fpic.rmb.bdstatic.com%2F151996996198960efffc341d1f1a55d3cb1caccf33.png

其中文章列表的div为:<div class="am-cf inner_li inner_li_abtest"></div>

我们可以看到其class的值为:am-cf inner_li inner_li_abtest。带空格的。多值的。

如果我们还是用getElementsByClass()这个方法获取的话,是获取不到的。eclipse中断点如下:

 

timg?pacompress&imgtype=0&sec=1439619614&autorotate=1&di=4bf040e91dd4e4ca453f6427483147b4&quality=90&size=b870_10000&src=http%3A%2F%2Fpic.rmb.bdstatic.com%2F1519969970d94b2bc30a0072997f5c7b2cc1a3c114.png

可以看到获取的值的长度size=0。没有获取到数据。

经过各方搜索,发现解决方案:使用的不是getElementsByClass()方法,可以使用其他方法。

先上成功后截图:

 

timg?pacompress&imgtype=0&sec=1439619614&autorotate=1&di=5f06db8244039e4e50bd889fcdcce15c&quality=90&size=b870_10000&src=http%3A%2F%2Fpic.rmb.bdstatic.com%2F15199699787a12400ee2d9977c38f0f8fb9e9fe2f3.png

我们可以看到数据的长度size=20了。说明获取到数据了。

下面讲解select方法使用:

Elements org.jsoup.nodes.Element.select(String cssQuery)

 

timg?pacompress&imgtype=0&sec=1439619614&autorotate=1&di=36a12dbbd3b65a59c9574de5bae624e2&quality=90&size=b870_10000&src=http%3A%2F%2Fpic.rmb.bdstatic.com%2F15199699850b625518df8cdef7c15e5a9692c96825.png

样式选择器。

查看源码:

 

timg?pacompress&imgtype=0&sec=1439619614&autorotate=1&di=9c7e6d02d7032b97a1ad94a30528407b&quality=90&size=b870_10000&src=http%3A%2F%2Fpic.rmb.bdstatic.com%2F15199699921eebd31e205d484a51f9d77fda86685e.png

我们知道这个可以多个。

在看看我们案例中使用的是:div.am-cf.inner_li.inner_li_abtest。为什么要这么写呢?

查看需要爬取文章的页面结构:

 

timg?pacompress&imgtype=0&sec=1439619614&autorotate=1&di=806d701a964110d28c7dd766b152c717&quality=90&size=b870_10000&src=http%3A%2F%2Fpic.rmb.bdstatic.com%2F1519969999c086f42c19824edd30ea16d4c5d5cc62.png

这下就明白了为什么这么用了吧。

凯哥微信id:kaigejava

个人网站:www.kaigejava.com

凯哥网站地址:http://kaigejava.com/article/detail/121

转载于:https://my.oschina.net/kaigejava/blog/1627802

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值