java xpath解析爬取网站内容

1.引入jar包

        <dependency>
	        <groupId>net.sourceforge.htmlcleaner</groupId>
	        <artifactId>htmlcleaner</artifactId>
	        <version>2.9</version>
	    </dependency>
	    
	    <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
		<dependency>
		    <groupId>org.jsoup</groupId>
		    <artifactId>jsoup</artifactId>
		    <version>1.11.3</version>
		</dependency>

2.创建一个Java类

public static void main(String[] args) throws IOException, XPatherException {
		
	    String url = "https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_9601717093207652821%22%7D&n_type=0&p_from=1";
	    String contents = Jsoup.connect(url).post().html();

	    HtmlCleaner hc = new HtmlCleaner();
	    TagNode tn = hc.clean(contents);
	    //代表class="article-title"的div标签下面的h2标签里面的内容
	    String xpath = "//div[@class='article-title']/h2/text()";	
	    Object[] objects = tn.evaluateXPath(xpath);
	    for (Object object : objects) {
			System.out.println(object);
		}
	    System.out.println(objects.length);

	    System.out.println("---------------------------------");
	    //代表class="article-content"的div标签下面的p标签下的span标签里面的内容
	    String xpath1 = "//div[@class='article-content']/p/span/text()";
	    Object[] objects1 = tn.evaluateXPath(xpath1);
	    for (Object object : objects1) {
			System.out.println(object);
		}
	    
	    System.out.println(objects1.length);
	}

3.备注:

//h2/a/@href   代表:h2标签下的a标签内的href

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java爬虫用于从网站上抓取数据,比如当当网(dangdang.com),是一个知名的电商平台。为了爬取当当网的数据,你需要遵循以下几个步骤: 1. **环境准备**: - 安装Java和一个HTTP库,如Jsoup、HttpClient或Apache HttpClient,这些库可以帮助处理网络请求和解析HTML内容。 2. **分析网页结构**: - 使用浏览器的开发者工具查看目标页面的源代码,了解HTML元素的结构以及你想要抓取的数据所在的XPath或CSS选择器。 3. **编写爬虫代码**: - 以下是一个简单的示例,使用Jsoup库: ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public void crawlDangDang(String url) { try { Document doc = Jsoup.connect(url).get(); Elements productElements = doc.select(".product-item"); // 选择商品列表元素 for (Element element : productElements) { String productName = element.select(".product-name").text(); // 获取产品名 String productPrice = element.select(".product-price").text(); // 获取价格 // ... 重复以上过程获取其他字段 System.out.println("Product Name: " + productName + ", Price: " + productPrice); } } catch (Exception e) { e.printStackTrace(); } } ``` 这里假设商品信息在HTML中被标记为`.product-item`下的子元素。 4. **处理反爬机制**: - 当当网可能有防止爬虫的措施,如设置User-Agent、添加延迟请求间隔、验证码等。确保遵守网站Robots协议,并尽可能模拟用户行为。 5. **错误处理和异常捕获**: - 在实际运行中,可能会遇到连接超时、权限不足等问题,记得添加适当的错误处理和重试机制。 6. **保存数据**: - 抓取到的数据通常会存储在文件、数据库或CSV等格式中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值