Java正则表达式爬取网页,贴出完整代码

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver; // HtmlUnitDriver 需要用到的包
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.List;
import java.util.ArrayList;


/**
* 获取今日头条的某条资讯 (仅测试)
* @author qyx
* @return
*/
public void toutiao(){
  	/*
  	* 这里使用的是ChromeDriver浏览器驱动,调用方法就会打开浏览器,执行速度慢,等待时间长
  	* 推荐项目中使用HtmlUnitDriver,伪浏览器,不打开浏览器,所有省去了渲染页面的时间,速度相对比较快,用法一样,注意加jar包
  	*/
  	WebDriverdriver =new ChromeDriver();
  	driver.get("https://www.toutiao.com/a6458888925732667918/");

  	// 整个页面的原代码
  	Stringcontent = driver.getPageSource();

  	/**   这里代码类似于Python的re模块,re模块很强大,这里代码实现功能相当于Python正则表达式的“re.findall()” */
  	Matcherm = Pattern.compile("<h1.*?article-title\">(.*?)</h1>.*?<div.*?\"article-sub\">.*?<span>(.*?)</span>.*?<span>.*?</span>.*?</div>.*?<div.*?\"article-content\"><div>(.*?)</div></div>").matcher(content);

  	List<String>result =new ArrayList<String>();
  	while (m.find()) {
    		//通过正则表达式占位符来获取需要的内容
    		result.add(m.group(1));//标题
    		result.add(m.group(2));//来源
    		result.add(m.group(3));//带html标签的内容
  	}
  	//通过类名称查找元素,我这里没有用到
  	// WebElement element = driver.findElement(By.className("article-content"));
  	// System.out.println(element.getText());

  	/*
  	* 关闭浏览器的方式区别
  	* driver.close() :关闭当前窗口,有父窗口的情况,仅关闭当前页面,父窗口保留
  	* driver.quit() :退出所有浏览器,有父窗口的情况,关闭所有页面,直接退出浏览器
  	*/
  	driver.quit();//退出浏览器,这里用一个就好

  	// 说明已经获取到内容
  	if(result !=null &&result.size() >= 3){
    		//资讯标题
    		String title = result.get(0);
    		//资讯来源
    		String source = result.get(1);
    		//资讯内容(就是带html标签的富文本)
    		String content = result.get(2);
  	}else{
  		//没有获取到任何内容
  	}
  	//成功获取到内容
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值