Share code trích xuất URL từ sitemap
Hello! Lại là 1 chuyên mục share code tiếp đây. Lâu lắm mình chưa share code cho anh em. Chắc hẳn anh em đang hóng code tiếp theo mình share là gì đúng không? Hic, nay mình đi dọn lại và soạn lại đống code thì mình tìm được 1 công cụ khá thú vị. Mặc dù công cụ này cũng chả cần nhưng mình vẫn quyết định tiếp tục share. Hôm nay mình sẽ Share code trích xuất URL từ sitemap. Cái này dành cho những ai rảnh rỗi thì ném link sitemap vào nhìn nó hoạt động chạy.
![]() |
| Share code trích xuất URL từ sitemap |
Giới thiệu
Code này mình không nhớ rõ lấy code từ bên nào. Tool này dùng để muốn trích xuất url từ file xml nào đó, nó tự động nhận diện url để lấy. Ví dụ mình thấy trang nào đó copy toàn bộ nội dung bên mình thì mình có thể dùng code này trích xuất url để báo cáo thay vì phải ngồi máy click chuột vào từng link để copy trông rất mệt. Hoặc anh em nào muốn share url thì cũng dùng tool này để trích xuất url trang blog của mình ra. Tool này có cả tính năng tải file excel CGV sau khi trích xuất. Nếu anh em dùng thì phải dùng cái link sitamap đúng chuẩn phải là có đuôi .xml nó mới trích xuất được. Mình share tool này free không mất đồng xu nào. Nên anh em có lấy về nhớ ghi nguồn. Tool này ngày nay chắc không ai dùng để vì có con Chat Box AI nhờ nó trích xuất ra cũng được. Để hoạt động anh em chỉ cần copy link sitemap vô nó trích xuất khải mất công copy nguyên cái xml vào con AI để tách.
Code trích xuất URL từ sitemap
Dưới đây là code trích xuất URL từ sitemap, các bạn chỉ cần copy vào bất cứ đâu trong mã html trang web là được đừng có mà dán nhầm code html vào luôn code của css
Đây là code
HTML
<style>
:root {
--primary-trickpro: #007bff;
--bg-trickpro: #f4f4f9;
--text-trickpro: #333;
}
.container-trickpro {
background: white;
width: 100%;
max-width: 700px;
padding: 30px;
border-radius: 12px;
box-shadow: 0 4px 15px rgba(0,0,0,0.1);
}
.input-group-trickpro {
margin-bottom: 20px;
padding: 15px;
border: 1px dashed #ccc;
border-radius: 8px;
}
label { font-weight: bold; display: block; margin-bottom: 8px; }
input[type="text"], input[type="file"] {
width: 100%;
padding: 10px;
box-sizing: border-box;
border: 1px solid #ddd;
border-radius: 6px;
}
.btn-trickpro {
background-color: var(--primary-trickpro);
color: white;
border: none;
padding: 12px 20px;
border-radius: 6px;
cursor: pointer;
width: 100%;
font-size: 16px;
transition: background 0.3s;
}
.btn-trickpro:hover { background-color: #0056b3; }
textarea {
width: 100%;
height: 200px;
margin-top: 20px;
padding: 10px;
border: 1px solid #ddd;
border-radius: 6px;
font-family: monospace;
box-sizing: border-box;
}
.actions-trickpro {
display: flex;
gap: 10px;
margin-top: 10px;
}
.btn-secondary-trickpro {
background-color: #6c757d;
flex: 1;
}
.status-trickpro {
margin-top: 10px;
font-size: 0.9em;
color: #666;
text-align: center;
}
</style> <div class="container-trickpro">
<h2>URL Extractor Tool</h2>
<div class="input-group-trickpro">
<label>Cách 1: Chọn file từ máy tính (.xml, .txt)</label>
<input type="file" id="file_input_trickpro" accept=".xml,.txt,.html">
</div>
<div class="input-group-trickpro">
<label>Cách 2: Nhập Link Sitemap Online</label>
<input type="text" id="url_input_trickpro" placeholder="https://example.com/sitemap.xml">
<small style="color: red; display:block; margin-top:5px;">* Lưu ý: Nếu web chặn CORS, hãy tải file về và dùng Cách 1.</small>
</div>
<button class="btn-trickpro" onclick="start_extract_trickpro()">Trích xuất Link</button>
<div class="status-trickpro" id="status_msg_trickpro">Sẵn sàng...</div>
<textarea id="output_area_trickpro" placeholder="Kết quả sẽ hiện ở đây..."></textarea>
<div class="actions-trickpro">
<button class="btn-trickpro btn-secondary-trickpro" onclick="copy_result_trickpro()">Copy Kết Quả</button>
<button class="btn-trickpro btn-secondary-trickpro" onclick="download_result_trickpro()">Tải về .txt</button>
</div>
</div>
<script>
// Hàm chính để điều phối việc trích xuất
async function start_extract_trickpro() {
const file_input_trickpro = document.getElementById('file_input_trickpro');
const url_input_trickpro = document.getElementById('url_input_trickpro');
const output_area_trickpro = document.getElementById('output_area_trickpro');
const status_msg_trickpro = document.getElementById('status_msg_trickpro');
output_area_trickpro.value = "";
status_msg_trickpro.innerText = "Đang xử lý...";
let raw_content_trickpro = "";
try {
// Ưu tiên xử lý File Upload trước
if (file_input_trickpro.files.length > 0) {
const file_trickpro = file_input_trickpro.files[0];
raw_content_trickpro = await read_file_trickpro(file_trickpro);
}
// Nếu không có file, kiểm tra URL input
else if (url_input_trickpro.value.trim() !== "") {
const target_url_trickpro = url_input_trickpro.value.trim();
// Sử dụng proxy để tránh lỗi CORS (chỉ dùng cho demo, production nên có backend)
// Ở đây mình fetch trực tiếp, nếu lỗi sẽ báo.
const response_trickpro = await fetch(target_url_trickpro);
if (!response_trickpro.ok) throw new Error("Không thể tải URL (Lỗi HTTP hoặc CORS).");
raw_content_trickpro = await response_trickpro.text();
} else {
alert("Vui lòng chọn file hoặc nhập URL!");
status_msg_trickpro.innerText = "Chưa có dữ liệu đầu vào.";
return;
}
// Tiến hành lọc link
const links_list_trickpro = parse_content_trickpro(raw_content_trickpro);
if (links_list_trickpro.length > 0) {
output_area_trickpro.value = links_list_trickpro.join('\n');
status_msg_trickpro.innerText = `Thành công! Tìm thấy ${links_list_trickpro.length} liên kết.`;
} else {
status_msg_trickpro.innerText = "Không tìm thấy URL nào hợp lệ.";
}
} catch (error_trickpro) {
console.error(error_trickpro);
status_msg_trickpro.innerText = "Lỗi: " + error_trickpro.message;
alert("Lỗi: Kiểm tra lại file hoặc URL (có thể bị chặn CORS).");
}
}
// Hàm đọc file từ máy tính
function read_file_trickpro(file_obj_trickpro) {
return new Promise((resolve_trickpro, reject_trickpro) => {
const reader_trickpro = new FileReader();
reader_trickpro.onload = (e) => resolve_trickpro(e.target.result);
reader_trickpro.onerror = (e) => reject_trickpro(e);
reader_trickpro.readAsText(file_obj_trickpro);
});
}
// Hàm Phân tích nội dung (Logic trích xuất)
function parse_content_trickpro(content_text_trickpro) {
let results_trickpro = [];
// Cách 1: Thử phân tích theo chuẩn XML Sitemap (<loc>...</loc>)
try {
const parser_trickpro = new DOMParser();
const xmlDoc_trickpro = parser_trickpro.parseFromString(content_text_trickpro, "text/xml");
const loc_tags_trickpro = xmlDoc_trickpro.getElementsByTagName("loc");
if (loc_tags_trickpro.length > 0) {
for (let i = 0; i < loc_tags_trickpro.length; i++) {
results_trickpro.push(loc_tags_trickpro[i].textContent.trim());
}
return results_trickpro; // Nếu tìm thấy thẻ loc thì trả về luôn
}
} catch (e) {
console.log("Không phải XML chuẩn, chuyển sang Regex.");
}
// Cách 2: Nếu không phải XML chuẩn, dùng Regex quét toàn bộ link http/https
// Regex tìm các chuỗi bắt đầu bằng http:// hoặc https://
const regex_trickpro = /(https?:\/\/[^\s<>"']+)/g;
const matches_trickpro = content_text_trickpro.match(regex_trickpro);
if (matches_trickpro) {
// Lọc trùng lặp
results_trickpro = [...new Set(matches_trickpro)];
}
return results_trickpro;
}
// Hàm Copy kết quả
function copy_result_trickpro() {
const output_trickpro = document.getElementById('output_area_trickpro');
output_trickpro.select();
document.execCommand('copy');
alert("Đã copy danh sách link!");
}
// Hàm Tải file kết quả
function download_result_trickpro() {
const text_content_trickpro = document.getElementById('output_area_trickpro').value;
if (!text_content_trickpro) return;
const blob_trickpro = new Blob([text_content_trickpro], { type: "text/plain" });
const anchor_trickpro = document.createElement("a");
anchor_trickpro.href = URL.createObjectURL(blob_trickpro);
anchor_trickpro.download = "extracted_links_trickpro.txt";
anchor_trickpro.click();
}
</script>
Demo:
URL Extractor Tool
Lời kết
Trên đây là mình Share code trích xuất URL từ sitemap. Chúc các bạn một ngày học tập và làm việc thật hiệu quả. Xin chào và hẹn gặp lại!
Copyright © Trick Pro

Tham gia cuộc trò chuyện