Java技术Jsoup爬取数据手动登录

Java语言爬取网页数据信息,使用jsoup技术。有的需要爬取的数据信息必须要登录之后才能看到的。所以需事先模拟登陆,然后在手拆dom,整理数据。导出数据。
**

1.模拟登陆之手动登录

如果是自动登录,该网站登录方式只有账号密码,这种简单的话可以先实现,与下方代码相似,参数则是账号密码,不需要cookie,登录进去之后可以取出cookie,在进行其他操作。但是如果是有验证码之类的参数,那么就需要打码平台之类对的东西。比较麻烦。
手动登录则只需要cookies参数,使用jsoup技术带着url和cookie参数。就可获取该页面数据。
**Java技术Jsoup爬取数据手动登录_第1张图片

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.util.HashMap;
import java.util.Map;
//接口参数
 Map<String, String> data = new HashMap<>();
            data.put("phone", "");
            data.put("name", "");
//通过接口地址、所需参数和cookie参数。就可访问该接口所能获取的数据或者说调用完该接口的页面
Document document = Jsoup.connect("url")
                    // 手动设置cookies
                    .header("Cookie", "自己去网站手动登录,登录后找到cookie,复制在此处")
                    .data(data)
                    .get();

2.解析dom

我这用的事简单解析,比较好的法可以是xpath,不过我是没有时间折腾。

  1. 通过唯一值的属性获取值,.val()的意思就是取value值,.text()的意思是取文本内容。
    String name = document.select("[id=name]").val();
    2)通过css样式获取值
    document.select(".qyTable-tit");
    取到值后,整理数据。就可以存入数据库。可以直接用数据库导出数据成excel表。

3.遇到的坑

已下说法仅针对于初学者。(这是我在前俩天的一些想法,以前也没接触过jsoup)
1.接口
找准爬取所需数据的接口地址,非常重要,很多网站的接口地址不是全部显示在地址栏上,所以通过f12找到接口地址尤为重要.
2.连接超时(bug)
在获取页面数据时加上这个 .timeout(60000)。
获取的数据量过大就会连接超时。可以分批次获取。比如循环获取,一次循环获取固定条数,等等。

本人小白,以上如有不对之处,烦请指正。欢迎下方留言讨论。

你可能感兴趣的:(Java,java,爬虫)