Java-爬虫

26 篇文章 0 订阅

Jsoup

jsoup 可直接解析某个URL地址、HTML文本内容。可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.13.1</version>
        </dependency>
  • 从一个URL、文件或字符串中解析HTML
  • 增添请求头(先用postman看一下需要哪些)
Document dox = Jsoup.connect(url).header("","").post();

//使用DOM或CSS选择器来查找、取出数据
Elements select = dox.select("[class = tm10]");
Element element = select.select("p").get(0);  //第0个P便签
Elements a1 = element.select("a");
  • 可操作HTML元素、属性、文本
    在这里插入图片描述
    我常用的:
a1.attr("href");   //获取标签中的文字  (href:链接 这里是获取链接)
a1.text;  //获取标签中的文本
a1.select("script").remove();  //去广告敲好用

Selenium

中文文档

  1. 下载谷歌浏览器驱动
    在这里插入图片描述
  2. 将驱动导入项目
    在这里插入图片描述
  3. 添加依赖
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>
  1. 可以用了
        ChromeOptions chromeOptions=new ChromeOptions();
        //设置 chrome 的无头模式
        //chromeOptions.setHeadless(Boolean.TRUE);

        //获取谷歌浏览器对应驱动路径(驱动版本需要和电脑的版本对应)
        String driverPath = new wrambychrome().getClass().getClassLoader().getResource("chromedriver.exe").getPath();
        //设置系统属性,添加谷歌浏览器驱动
        System.setProperty("webdriver.chrome.driver", driverPath);
        //创建谷歌浏览器
        WebDriver driver = new ChromeDriver(chromeOptions);

        //设置窗口大小最大化
        driver.manage().window().maximize();

        //打开链接页面
        String url = "http://www.";
        driver.get(url);
        driver.get(url);
        //等页面加载一下
        Thread.sleep(1000);
        //获取标签中的内容
        WebElement iframe = driver.findElement(By.tagName("iframe"));
        driver.switchTo().frame(iframe);
        WebElement element = driver.findElement(By.id("CheckPic"));
        //点击
        element.click();
        //输入值
        WebElement inputCheck = driver.findElement(By.id("InputCheck"));
        inputCheck.sendKeys("");
        //获取窗口句柄
        driver.getWindowHandles();
        //切换句柄到某个窗口
        driver.switchTo().window(1);

		//调用JavascriptExecutor 
		try {
              //声明一个js执行器
              JavascriptExecutor je = (JavascriptExecutor) driver;
              //调用执行器的executeScript方法执行js脚本
              je.executeScript("arguments[0].click();", webElement);
              Thread.sleep(500);
            }catch (Exception a){
        }

Json

有的时候爬取的内容不在页面中,它返回的是一串json格式的内容

	//获取的时候获取成字符串的格式
	String str_json_all_school_information = Jsoup.connect(url).ignoreContentType(true).get().text();
	//转换成JSONObject
	JSONObject j_all_school_info = JSONObject.parseObject(str_json_all_school_information);
	//获取json格式中的值
	String school_list = j_all_school_info.getString("list");
	JSONArray j_school_list = JSONObject.parseArray(school_list);

在这里插入图片描述
ignoreContentType(true) ,也就是忽略约定的,不然获取不了json格式的内容
在这里插入图片描述

HtmlUnit

类似于Selenium,无界面,下次一定用。

HttpClient

类似于Jsuop,下次一定用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值