首先我们必需明确一点的是,自己想要对那些网站进行爬取相关信息,其次就是你要爬取的东西,你要什么?接下来就是怎么去爬取,采用的方式手段是什么?页面中是否存在反爬虫技术,如何去解决?
(备注:以下部分说法是建立在下载HTML页面,css样式,js文件,各类图片中操作的)
一、jsoup + java技术爬虫
充分利用Jsoup 工具,进行页面的解析,获取,以及修改原页面的东西,达成你想要的的效果。jsoup 是一种解析HTML页面转成doc,一个树状形式的数据结构,功能非常强大。
jsoup 中会有正则表达式,通过正则表达式,利用Pattern 、Matcher ,可以获取特定的字段替换自己不要的东西
二、jsoup 获取HTML常用的属性方法有:
a.获取id的属性的值,由于id属性唯一,所以属性element 是单数。getELementById(”idName”).text(),获得的是String类型数据;
b.获取class的属性值,class属性为多个元素值,所以是一个复数概念,然后doc中存在这个getindex方法,获取第几个元素,同时亦可以用text()方法,或者是tostring方法,直接输出;
c.获取tag标签的属性值,tag标签也是一个多数的概念,所以呢,是一个ELements 存储的对象的,要精准的定位在哪个地方需要自己多看一下页面的结构方式是怎么样的,获得标签之后,你可以对它进行操作,比如添加样式,添加节点,删除属性值,删除不必要的东西…………….比较多的东西
d.获取方式getXX方式,也可以使用Select,具体的可以参看jsoup开发文档。
三、今天的重点
1.数据就存在标签中(最简单)如何获取?
解决办法:
通过标签和属性class 名称,id名称直接绑定获取值,比较简单。
实例:比如存在一个<div class=”myclass”>我是div实例<div>
String value = doc.getElementByClass(“myclass”).text();(备注:)
2.数据信息存在<script>标签中如何获取?
解决方式:
通过document.getElementByTag(“name”).text();方法,同时转成文本类型去针对性的分析,获取你要img类型,title标题,文本信息等等,可以写正则表达式,匹配你想要的数据保存下来
3.数据信息存在js 文件中如何获取?
解决方式:
先读取文件,正则表达式匹配想要的内容,修改替换,最后保存文件并写入(个人极其不推荐使用)
4.数据信息存在跨域怎么办?
信息的跨域问题,多数在js 文件中体现,加载的时候会访问别的网上,显然不是我们想要的东西。
解决方式:
找到跨域地址,自己下载下来存放在本地。但是多个数据中都有跨域的问题,则这种方式的采用不是可取的。我们就可以采用我们的一个强大的HTMLUnit这个东西。
(备注:htmlunit工具可以解决跨域的问题,也可以解决js 文件数据的问题,还可以解决动态数据加载的问题,因为它都是加载数据渲染到页面去的,标签上你能看到的东西都是加载后的,可以被获取。本人亲测可用)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/38452.html