【GAS】 sitemap.xml을 스크래핑하여 스프레드 시트에 URL 목록으로 내보내기
Google Apps Script에서 XML을 구문 분석할 때 XmlService 클래스가 제공되므로 이 클래스를 사용하여 검색 프로세스를 구현합니다.
XmlService 클래스에 관한 자세한 것은 이쪽 공식 참조 로.
구현 절차
스크립트 편집기를 엽니다.
다음 코드를 작성하고 실행합니다.
function getxml() {
var sitemapUrl = "ここにsitemap.xmlのUrl";
var xmlString = "http://www.sitemaps.org/schemas/sitemap/0.9";
var xmlText = UrlFetchApp.fetch(sitemapUrl).getContentText();
var document = XmlService.parse(xmlText);
var xmlProtocol = XmlService.getNamespace(xmlString);
var urlEntries = document.getRootElement().getChildren('url', xmlProtocol);
var sheet = SpreadsheetApp.getActive().getSheetByName('シート1');
var urlArray = [];
for (var urlIndex= 0; urlIndex < urlEntries.length; urlIndex++) {
if(urlIndex == 0 || urlIndex == 1){
urlIndex = urlIndex + 1;
}
// シートに書き込む
var rIndex = "A" + urlIndex;
sheet.getRange(rIndex).setValue(urlEntries[urlIndex].getChild('loc', xmlProtocol).getText());
}
}
자세히 살펴 보겠습니다.
var xmlText = UrlFetchApp.fetch(sitemapUrl).getContentText();
var document = XmlService.parse(xmlText);
UrlFetchApp 클래스의 parse 메서드로 XML을 가져오고 XmlService의 parse 메서드로 XML을 구문 분석합니다.
var xmlProtocol = XmlService.getNamespace(xmlString);
var urlEntries = document.getRootElement().getChildren('url', xmlProtocol);
로 문서 전체의 구조를 취득해, getChildren()로 목적의 url 요소를 추출합니다.
var sheet = SpreadsheetApp.getActive().getSheetByName('シート1');
var urlArray = [];
for (var urlIndex= 0; urlIndex < urlEntries.length; urlIndex++) {
if(urlIndex == 0 || urlIndex == 1){
urlIndex = urlIndex + 1;
}
// シートに書き込む
var rIndex = "A" + urlIndex;
sheet.getRange(rIndex).setValue(urlEntries[urlIndex].getChild('loc', xmlProtocol).getText());
}
그리고는 취득한 URL 리스트를 시트의 A열에 써내기만 하면 됩니다.
다음이 시트에 출력한 결과입니다.
그리고는, 이 URL 리스트를 끓인다 굽는다.
Bot에서 SNS에 정기 투고해도 좋을 것입니다.
요약
어땠습니까?
Google Apps Script에서의 XML 퍼스는 편리하고 간단하기 때문에, 방법을 기억해 두면 다양한 장면에서 응용이 된다고 생각합니다. 꼭 시험해 보지 않겠습니까?
Reference
이 문제에 관하여(【GAS】 sitemap.xml을 스크래핑하여 스프레드 시트에 URL 목록으로 내보내기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kingpanda/items/e22901550bf0877b6ed6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
function getxml() {
var sitemapUrl = "ここにsitemap.xmlのUrl";
var xmlString = "http://www.sitemaps.org/schemas/sitemap/0.9";
var xmlText = UrlFetchApp.fetch(sitemapUrl).getContentText();
var document = XmlService.parse(xmlText);
var xmlProtocol = XmlService.getNamespace(xmlString);
var urlEntries = document.getRootElement().getChildren('url', xmlProtocol);
var sheet = SpreadsheetApp.getActive().getSheetByName('シート1');
var urlArray = [];
for (var urlIndex= 0; urlIndex < urlEntries.length; urlIndex++) {
if(urlIndex == 0 || urlIndex == 1){
urlIndex = urlIndex + 1;
}
// シートに書き込む
var rIndex = "A" + urlIndex;
sheet.getRange(rIndex).setValue(urlEntries[urlIndex].getChild('loc', xmlProtocol).getText());
}
}
var xmlText = UrlFetchApp.fetch(sitemapUrl).getContentText();
var document = XmlService.parse(xmlText);
var xmlProtocol = XmlService.getNamespace(xmlString);
var urlEntries = document.getRootElement().getChildren('url', xmlProtocol);
var sheet = SpreadsheetApp.getActive().getSheetByName('シート1');
var urlArray = [];
for (var urlIndex= 0; urlIndex < urlEntries.length; urlIndex++) {
if(urlIndex == 0 || urlIndex == 1){
urlIndex = urlIndex + 1;
}
// シートに書き込む
var rIndex = "A" + urlIndex;
sheet.getRange(rIndex).setValue(urlEntries[urlIndex].getChild('loc', xmlProtocol).getText());
}
어땠습니까?
Google Apps Script에서의 XML 퍼스는 편리하고 간단하기 때문에, 방법을 기억해 두면 다양한 장면에서 응용이 된다고 생각합니다. 꼭 시험해 보지 않겠습니까?
Reference
이 문제에 관하여(【GAS】 sitemap.xml을 스크래핑하여 스프레드 시트에 URL 목록으로 내보내기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kingpanda/items/e22901550bf0877b6ed6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)