3 releases
0.1.2 | Jul 8, 2024 |
---|---|
0.1.1 | Jul 8, 2024 |
0.1.0 | Jul 7, 2024 |
#1831 in Web programming
69 downloads per month
19KB
168 lines
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!["script", "style"];
let classes = vec!["class1", "class2"];
let filtered_html = get_filtered_html(url, &tags, &classes);
println!("{}", filtered_html);
2. get_filtered_html_fullurl
功能描述:获取过滤后的HTML内容,并更新相对路径为绝对路径。
参数:
url: &str
:目标URL。tags: &[&str]
:需要过滤的标签列表。classes: &[&str]
:需要过滤的类名列表。
返回值:过滤后的HTML内容字符串,且所有相对路径已更新为绝对路径。
示例:
let url = "https://example.com";
let tags = vec!["script", "style"];
let classes = vec!["class1", "class2"];
let filtered_html = get_filtered_html_fullurl(url, &tags, &classes);
println!("{}", filtered_html);
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!["script", "style"];
let classes = vec!["class1", "class2"];
let filtered_html = get_filtered_html_fullurl_removeref(url, &tags, &classes);
println!("{}", filtered_html);
4. process_url
功能描述:处理URL并保存过滤后的HTML内容。
参数:
url: &str
:目标URL。tags: &[&str]
:需要过滤的标签列表。classes: &[&str]
:需要过滤的类名列表。output_dir: &str
:输出目录。
示例:
let url = "https://example.com";
let tags = vec!["script", "style"];
let classes = vec!["class1", "class2"];
let output_dir = "output";
process_url(url, &tags, &classes, output_dir);
5. process_url_full
功能描述:处理URL并保存过滤后的HTML内容,更新相对路径为绝对路径。
参数:
url: &str
:目标URL。tags: &[&str]
:需要过滤的标签列表。classes: &[&str]
:需要过滤的类名列表。output_dir: &str
:输出目录。
示例:
let url = "https://example.com";
let tags = vec!["script", "style"];
let classes = vec!["class1", "class2"];
let output_dir = "output_fullurl";
process_url_full(url, &tags, &classes, output_dir);
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!["script", "style"];
let classes = vec!["class1", "class2"];
let output_dir = "output_fullurl_removeref";
process_url_full_removeref(url, &tags, &classes, output_dir);
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(filtered_html, url, output_dir);
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(content);
filter_tags(&document, "script");
println!("{}", document.to_string());
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(content);
filter_classes(&document, "class1");
println!("{}", document.to_string());
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(content);
update_relative_paths(&document, "https://example.com");
println!("{}", document.to_string());
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(content);
remove_ref_from_urls(&document);
println!("{}", document.to_string());
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(html);
println!("{}", cleaned_html);
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(url, output_dir);
println!("{}", output_path);
测试函数
本库还包含了一些测试函数,用于验证主要功能是否正常工作。这些测试函数可以在tests
模块中找到。
test_save_html
功能描述:测试保存过滤后的HTML内容。
示例:
#[test]
fn test_save_html() {
let url = "https://itsfoss.com/ollama/";
let output_dir = "output";
let tags = vec!["script", "style"];
let classes = vec!["class1", "class2"];
process_url(url, &tags, &classes, output_dir);
}
test_process_url_full
功能描述:测试处理URL并保存过滤后的HTML内容,更新相对路径为绝对路径。
示例:
#[test]
fn test_process_url_full() {
let url = "https://itsfoss.com/ollama/";
let output_dir = "output_fullurl";
let tags = vec!["script", "style"];
let classes = vec!["class1", "class2"];
process_url_full(url, &tags, &classes, output_dir);
}
test_process_url_full_removeref
功能描述:测试处理URL并保存过滤后的HTML内容,更新相对路径为绝对路径,并移除URL中的引用参数。
示例:
#[test]
fn test_process_url_full_removeref() {
let url = "https://itsfoss.com/ollama/";
let output_dir = "output_fullurl_removeref";
let tags = vec!["script", "style"];
let classes = vec!["class1", "class2"];
process_url_full_removeref(url, &tags, &classes, output_dir);
}
依赖库
本库依赖以下外部库:
kuchiki
:用于HTML解析和操作。reqwest
:用于HTTP请求。
Dependencies
~6–18MB
~285K SLoC