如何利用java写一个爬虫程序

如何利用java写一个爬虫程序

首先,要先导入jsoup依赖

<dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.12.1</version>
</dependency>

导入依赖之后,就可以通过jsoup来写爬虫程序了,先获取百度网页的标题试试看

String url = "http://www.Baidu.com";//这里设置要访问网页的url地址
Document document = Jsoup.connect(url).get();//使用jsoup访问网址,然后调取get方法,获取网页源代码,转换成document类型对象
String title = document.title();//获取网页的标题
System.out.println(title);

结果展示:

成功获取网站的标题

我们也可以通过这个方法来获取网页的整个源代码
System.out.println(document.body());
这样就能输出百度网页的源代码,不过这样并没有什么用,但是可以发现一件有趣的事情,在浏览器的控制台中出现了:


有些网站就以这样的方式,当你用爬虫程序访问时,把招聘的网址显示在浏览器的控制台中

那么,应该怎么样利用爬虫获取想要的信息?

最重要的步骤就是我们要去我们想要获取信息的网页,查看它的源代码,弄明白我们要的数据存放在哪一个标签里

比如说,我们要获取这个网站的h1标签内的内容

Document document = Jsoup.connect(url).get();
Element body = document.body();
String h1 = body.getElementsByTag("h1").get(0).text();//获取第一个h1标签里的内容

如果这样写,

Document document = Jsoup.connect(url2).get();
Element body = document.body();
String li = body.getElementsByTag("li").text();

将会返回这个网页中所有li标签的内容,所有li中的内容会以空格为间隔符拼接符连成一个字符串返回,
所以要逐个获取,我们可以将其拆分

String li = body.getElementsByTag("li").text();
String[] lis = li.split(" ");
for(int i=0; i<lis.length; i++){
     System.out.println(lis[i]); 
}

也可以获取dom元素的任何一个子元素的内容,这点和js一样

Document document = Jsoup.connect(url2).get();
Element body = document.body();
Element hhh = body.getElementById("hhh");//获取名为hhh的dom元素
String a = hhh.getElementsByTag("a").get(0).text();//获取该元素下的第一个a标签的文本内容

如果要把爬虫获取的数据写入数据库的话,一定不要在for循环中每次获取都将其插入数据库,因为爬虫获取的数据条数庞大,这样做很容易导致数据库的资源
占用过多而崩溃。
最好在获取完所有的数据后再一次性写入数据库。

现在的大多数都有反爬虫的措施,当我们爬虫程序请求次数过多,控制台就会报504错误,那是因为网页限制了你的爬虫请求

posted @ 2021-01-20 21:42  TidalCoast  阅读(678)  评论(0编辑  收藏  举报