public static String relative2AbsolutePath(String content, String url, String tag, String property) throws URISyntaxException,
MalformedURLException {
String newContent = "";
if (content != null && content.trim() != "") {
URI base = new URI(url);// 基本网页URI
Document doc = Jsoup.parse(content);
for (Element ele : doc.getElementsByTag(tag)) {
String elePropValue = ele.attr(property);
if (!elePropValue.matches("^(https?|ftp):(\\\\|//).*$")) {
URI abs = base.resolve(elePropValue);// 解析相对URL,得到绝对URI
ele.attr(property, abs.toURL().toString());
}
}
newContent = doc.html();
}
return newContent;
}
public static String relative2AbsolutePath(String content, String url) {
try {
content = Tool.relative2AbsolutePath(content, url, "a", "href");
content = Tool.relative2AbsolutePath(content, url, "img", "src");
} catch (MalformedURLException e) {
log.error(e.getMessage(), e);
} catch (URISyntaxException e) {
log.error(e.getMessage(), e);
}
return content;
}
分享到:
相关推荐
本篇文章将探讨网络爬虫设计的一些核心概念和策略,包括URL标准化、防止陷入网络陷阱、遵循漫游拒绝访问规则,以及两种常见的爬虫搜索策略——宽度优先搜索和线性搜索。 首先,URL地址的标准化是爬虫设计的基础,...
这些值通常是相对路径,可能需要结合网站的基URL才能得到完整的图片URL。 6. 下载图片:使用`urllib.request.urlretrieve()`或自定义方法,将图片下载到本地。可能需要创建一个目录来存储所有图片,确保文件名的...
深度优先搜索算法在网络爬虫中的应用,可以深入到网站的深层次,但是它并不适合获取一个较大网站的全部页面,因为这可能导致爬虫在少数几个路径上耗费大量时间,而忽视了其他页面。 广度优先搜索算法与深度优先搜索...
在这个环境中,网络爬虫可能被设计成寻找从起点到终点的最短路径,这与实际的网页抓取过程有相似之处——爬虫遍历网页结构,寻找目标信息。用户可以自定义迷宫的生成规则和设定初始位置,增强了交互性和可玩性。 ...
结构化爬虫是一种自动化获取网页信息的技术,它能够有组织地抓取并处理网络上的数据。在本场景中,我们讨论的是如何通过搜索特定关键词来抓取网站的搜索结果,以百度搜索引擎为例。 首先,我们需要了解网站的URL...
### 自己动手写网络爬虫 #### 知识点一:网络爬虫的基本概念 - **定义**:网络爬虫(Web Crawler),也被称为网页蜘蛛、网络机器人,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 - **作用**:...
#### 四、基于Python的网络爬虫设计实例——世纪佳缘网爬虫 ##### 4.1 数据目标 以世纪佳缘网为例,需要爬取的数据主要包括注册用户的用户名、真实姓名、性别、年龄、学历、月收入等个人信息。 ##### 4.2 技术实现...
如果缓存中没有,爬虫会尝试下载并解析`robots.txt`文件,将不允许的路径存储到列表中。 4. **缓存机制**:使用`HashMap, ArrayList<String>> disallowListCache`存储不同域名的`robots.txt`规则,以减少不必要的...
在本课程"Python爬虫编程基础5天速成——P13——文件处理"中,我们将深入探讨这个主题,了解如何有效地操作文件。 首先,我们来看几种写入模式: 1. `w`模式:这是最基本的写入模式,用于覆盖已存在的文件或创建新...
总结来说,XPath是网络爬虫中强大的数据提取工具,通过理解并熟练运用XPath路径表达式,可以高效地从HTML或XML文档中抓取所需数据。结合Python的lxml库,可以轻松实现数据解析,进而实现自动化网络数据的采集。
在本项目中,我们主要探讨的是使用Java编程语言开发的一款网络爬虫,其目标是爬取特定网站——“校花网”上的所有美女图片。同时,项目还包含了一个基于Swing的简单游戏——贪吃蛇,增加了趣味性。以下是关于Java...
本文将深入探讨搜索引擎的工作原理,特别是其中的关键步骤——网络爬虫技术。 #### 一、搜索引擎工作流程 搜索引擎的工作流程可以分为三个主要步骤: 1. **从互联网上抓取网页**:这个过程通常由网络爬虫(Spider...
### 基于Heritrix的主题网络爬虫设计与实现 #### 概述 随着互联网信息的爆炸式增长,高效地获取和筛选出有价值的信息变得越来越重要。传统的搜索引擎虽然能够覆盖广泛的网络信息,但对于特定领域的深入挖掘却显得...
### 自己动手写爬虫——基于Java的网络爬虫教程 #### 第1章 全面剖析网络爬虫 ##### 1.1 抓取网页 **1.1.1 深入理解URL** 要开始编写一个网络爬虫,首先需要理解如何与网页交互。在这一过程中,最基本的操作之一...
3. **parse**:用于解析和构建URL,可以将URL分解成各个部分,如协议、主机名、路径、参数等。例如,解析CSDN网址: ```python from urllib.parse import urlparse s = urlparse('...
内容概要:本文档阐述了 Python 爬虫的基本概念,详细讲解了构建一个简单有效的爬虫所需的五个关键步骤——确定目标、发送请求、解析内容、提取数据和保存结果,并附带了每个阶段相应的实例代码段帮助理解和实施。...
Python爬虫之Scrapy框架 Scrapy是一个基于Python的爬虫框架,具有高效、灵活、可扩展等特点。下面将逐步介绍Scrapy框架的安装、配置、使用及其核心组件。 1. 安装Scrapy框架 首先需要在PyCharm下安装Scrapy函数库...