Java爬虫(五)--数据修改

一、设置属性的值

问题
在你解析一个Document之后可能想修改其中的某些属性值,然后再保存到磁盘或都输出到前台页面。

方法
可以使用属性设置方法 Element.attr(String key, String value), 和 Elements.attr(String key, String value).

假如你需要修改一个元素的 class 属性,可以使用 Element.addClass(String className) 和 Element.removeClass(String className) 方法。

Elements 提供了批量操作元素属性和class的方法,比如:要为div中的每一个a元素都添加一个 rel=”nofollow” 可以使用如下方法:

doc.select("div.comments a").attr("rel", "nofollow");

说明
与Element中的其它方法一样,attr 方法也是返回当 Element (或在使用选择器是返回 Elements 集合)。这样能够很方便使用方法连用的书写方式。比如:

doc.select("div.masthead").attr("title", "jsoup").addClass("round-box");

二、设置一个元素的HTML内容

问题
你需要一个元素中的HTML内容

方法
可以使用Element中的HTML设置方法具体如下:

Element div = doc.select("div").first(); // <div></div>
div.html("<p>lorem ipsum</p>"); // <div><p>lorem ipsum</p></div>
div.prepend("<p>First</p>");//在div前添加html内容
div.append("<p>Last</p>");//在div之后添加html内容
// 添完后的结果: <div><p>First</p><p>lorem ipsum</p><p>Last</p></div>

Element span = doc.select("span").first(); // <span>One</span>
span.wrap("<li><a href='http://example.com/'></a></li>");
// 添完后的结果: <li><a href="http://example.com"><span>One</span></a></li>

说明:

  • Element.html(String html) 这个方法将先清除元素中的HTML内容,然后用传入的HTML代替。
  • Element.prepend(String first) 和 Element.append(String last) 方法用于在分别在元素内部HTML的前面和后面添加HTML内容
  • Element.wrap(String around) 对元素包裹一个外部HTML内容。

参见
可以查看API参考文档中 Element.prependElement(String tag)
Element.appendElement(String tag) 方法来创建新的元素并作为文档的子元素插入其中。

三、设置元素的文本内容

问题
你需要修改一个HTML文档中的文本内容

方法
可以使用Element的设置方法:

Element div = doc.select("div").first(); // <div></div>
div.text("five > four"); // <div>five &gt; four</div>
div.prepend("First ");
div.append(" Last");
// now: <div>First five &gt; four Last</div>

说明
文本设置方法与 HTML setter 方法一样:

  • Element.text(String text) 将清除一个元素中的内部HTML内容,然后提供的文本进行代替
  • Element.prepend(String first) 和 Element.append(String last) 将分别在元素的内部html前后添加文本节点。

对于传入的文本如果含有像 <, > 等这样的字符,将以文本处理,而非HTML。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java中的HttpURLConnection或者HttpClient库来获取网页数据,具体步骤如下: 1. 创建URL对象,设置请求的URL地址。 2. 打开连接,获取HttpURLConnection对象或者HttpClient对象。 3. 设置请求头信息,如User-Agent、Referer等。 4. 发送请求,获取响应数据。 5. 解析响应数据,提取所需内容。 6. 关闭连接,释放资源。 以下是使用HttpURLConnection实现获取网页数据的示例代码: ``` import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class Spider { public static void main(String[] args) { try { // 创建URL对象,设置请求的URL地址 URL url = new URL("http://www.example.com"); // 打开连接,获取HttpURLConnection对象 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 设置请求头信息 conn.setRequestMethod("GET"); conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"); // 发送请求,获取响应数据 InputStream in = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8")); String line; StringBuilder sb = new StringBuilder(); while ((line = reader.readLine()) != null) { sb.append(line); } // 解析响应数据,提取所需内容 String html = sb.toString(); // 关闭连接,释放资源 in.close(); reader.close(); conn.disconnect(); } catch (Exception e) { e.printStackTrace(); } } } ``` 代码中的url变量可以替换成需要爬取的网页地址,User-Agent可以根据需要进行修改。解析响应数据的部分需要根据具体的网页结构进行编写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值