LibHTMLFilter
本库提供了一系列函数,用于从指定URL获取HTML内容,并根据用户定义的标签和类名进行过滤,同时支持将相对路径更新为绝对路径,以及移除URL中的引用参数。以下是每个函数的详细说明和使用示例。
1. get_filtered_html
功能描述:获取过滤后的HTML内容。
参数:
url: &str:目标URL。tags: &[&str]:需要过滤的标签列表。classes: &[&str]:需要过滤的类名列表。
返回值:过滤后的HTML内容字符串。
示例:
let url = "https://example.com";
let tags = vec!;
let classes = vec!;
let filtered_html = get_filtered_html;
println!;
2. get_filtered_html_fullurl
功能描述:获取过滤后的HTML内容,并更新相对路径为绝对路径。
参数:
url: &str:目标URL。tags: &[&str]:需要过滤的标签列表。classes: &[&str]:需要过滤的类名列表。
返回值:过滤后的HTML内容字符串,且所有相对路径已更新为绝对路径。
示例:
let url = "https://example.com";
let tags = vec!;
let classes = vec!;
let filtered_html = get_filtered_html_fullurl;
println!;
3. get_filtered_html_fullurl_removeref
功能描述:获取过滤后的HTML内容,更新相对路径为绝对路径,并移除URL中的引用参数。
参数:
url: &str:目标URL。tags: &[&str]:需要过滤的标签列表。classes: &[&str]:需要过滤的类名列表。
返回值:过滤后的HTML内容字符串,所有相对路径已更新为绝对路径,且移除了URL中的引用参数。
示例:
let url = "https://example.com";
let tags = vec!;
let classes = vec!;
let filtered_html = get_filtered_html_fullurl_removeref;
println!;
4. process_url
功能描述:处理URL并保存过滤后的HTML内容。
参数:
url: &str:目标URL。tags: &[&str]:需要过滤的标签列表。classes: &[&str]:需要过滤的类名列表。output_dir: &str:输出目录。
示例:
let url = "https://example.com";
let tags = vec!;
let classes = vec!;
let output_dir = "output";
process_url;
5. process_url_full
功能描述:处理URL并保存过滤后的HTML内容,更新相对路径为绝对路径。
参数:
url: &str:目标URL。tags: &[&str]:需要过滤的标签列表。classes: &[&str]:需要过滤的类名列表。output_dir: &str:输出目录。
示例:
let url = "https://example.com";
let tags = vec!;
let classes = vec!;
let output_dir = "output_fullurl";
process_url_full;
6. process_url_full_removeref
功能描述:处理URL并保存过滤后的HTML内容,更新相对路径为绝对路径,并移除URL中的引用参数。
参数:
url: &str:目标URL。tags: &[&str]:需要过滤的标签列表。classes: &[&str]:需要过滤的类名列表。output_dir: &str:输出目录。
示例:
let url = "https://example.com";
let tags = vec!;
let classes = vec!;
let output_dir = "output_fullurl_removeref";
process_url_full_removeref;
7. save_filtered_html
功能描述:保存过滤后的HTML内容到指定目录。
参数:
filtered_html: &str:过滤后的HTML内容。url: &str:目标URL。output_dir: &str:输出目录。
示例:
let filtered_html = "<html><body><h1>Hello, World!</h1></body></html>";
let url = "https://example.com";
let output_dir = "output";
save_filtered_html;
8. filter_tags
功能描述:过滤指定标签。
参数:
document: &NodeRef:HTML文档节点引用。rule: &str:过滤规则。
示例:
let content = "<html><body><script>alert('test');</script><h1>Hello, World!</h1></body></html>";
let document = parse_html.one;
filter_tags;
println!;
9. filter_classes
功能描述:过滤指定类名。
参数:
document: &NodeRef:HTML文档节点引用。class: &str:类名。
示例:
let content = "<html><body><div class='class1'>Hello, World!</div></body></html>";
let document = parse_html.one;
filter_classes;
println!;
10. update_relative_paths
功能描述:更新相对路径为绝对路径。
参数:
document: &NodeRef:HTML文档节点引用。base_url: &str:基础URL。
示例:
let content = "<html><body><img src='image.jpg'/></body></html>";
let document = parse_html.one;
update_relative_paths;
println!;
11. remove_ref_from_urls
功能描述:移除URL中的引用参数。
参数:
document: &NodeRef:HTML文档节点引用。
示例:
let content = "<html><body><a href='https://example.com?ref=123'>Link</a></body></html>";
let document = parse_html.one;
remove_ref_from_urls;
println!;
12. remove_empty_lines
功能描述:移除空行。
参数:
html: String:HTML内容字符串。
返回值:移除空行后的HTML内容字符串。
示例:
let html = "<html>\n<body>\n<h1>Hello, World!</h1>\n</body>\n</html>";
let cleaned_html = remove_empty_lines;
println!;
13. generate_output_path
功能描述:生成输出路径。
参数:
url: &str:目标URL。output_dir: &str:输出目录。
返回值:输出文件路径字符串。
示例:
let url = "https://example.com/path/to/page";
let output_dir = "output";
let output_path = generate_output_path;
println!;
测试函数
本库还包含了一些测试函数,用于验证主要功能是否正常工作。这些测试函数可以在tests模块中找到。
test_save_html
功能描述:测试保存过滤后的HTML内容。
示例:
test_process_url_full
功能描述:测试处理URL并保存过滤后的HTML内容,更新相对路径为绝对路径。
示例:
test_process_url_full_removeref
功能描述:测试处理URL并保存过滤后的HTML内容,更新相对路径为绝对路径,并移除URL中的引用参数。
示例:
依赖库
本库依赖以下外部库:
kuchiki:用于HTML解析和操作。reqwest:用于HTTP请求。