ブログなどのWEBサイトを運用していると、URL・更新時間の一覧がほしくなるときがあります。
今回は、sitemap.xml(サイトマップ インデックス ファイル対応版)を利用してサイトマップを作っている人向けに、URL・更新時間の一覧をPythonで作成するサンプルコードを公開します!
サイトマップ インデックス ファイルについては、以下のサイトを確認してください。
サンプルコードは、ライバルサイトの調査にも利用できますが、スクレイピングの技術を利用するため、サーバーの負荷対策は行ってください。
サンプルコード
#サイトマップを取り出す(2階層対応)
from bs4 import BeautifulSoup
import requests
import re
import pandas as pd
import time
xml_sitemap_url = 'あなたのサイトマップのURL 例:http://samplepage/sitemap.xml'
def get_site_info(sitemap):
"""
以下の様なsitemapにある情報を取り出す
<url>
<loc>https://sample.jp/content1</loc>
<lastmod>2021-11-07T23:59:17+00:00</lastmod>
<changefreq>monthly</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>https://sample.jp/content2</loc>
<lastmod>2021-11-04T11:40:38+00:00</lastmod>
<changefreq>monthly</changefreq>
<priority>0.2</priority>
</url>
"""
# 対象サイトのsitemap.xmlを指定
response = requests.get(sitemap)
result = response.content
url_lists = ''
bs = BeautifulSoup(result, 'xml')
#url分のループ
xml_url_list = bs.select('url')
output_url_list = []
for url in xml_url_list:
url_dict = {}
#urlの取り出し
loc = url.select('loc')
loc = re.sub('<[a-z]>', '', loc[0].text)
url_dict["loc"] = loc
#更新時間取り出し
lastmod = url.select('lastmod')
lastmod = re.sub('<[a-z]>', '', lastmod[0].text)
url_dict["lastmod"] = lastmod
output_url_list.append(url_dict)
return output_url_list
#サイトマップ一覧(サイトマップ インデックス ファイル)を取得する
response = requests.get(xml_sitemap_url)
result = response.content
url_lists = ''
bs = BeautifulSoup(result, 'xml')
xml_sitemap_list = bs.select('sitemap')
sitemap_list = []
for url in xml_sitemap_list:
url_dict = {}
#urlの取り出し
loc = url.select('loc')
loc = re.sub('<[a-z]>', '', loc[0].text)
sitemap_list.append(loc)
output_url_list = []
for sitemap in sitemap_list:
time.sleep(2) #負荷対策で地味に重要
d_list = get_site_info (sitemap)
output_url_list.extend(d_list)
sitemap_df = pd.DataFrame(output_url_list)
sitemap_df.to_csv("sitemap_list.csv")
以上の結果、以下のようなサイトマップからurl,更新時間(UTC時間になっています)を取り出すことができます。
めでたし、めでたし
\IT未経験者からのサポートあり!転職サービス3選!!/
サービス名 | |||
---|---|---|---|
未経験 | 未経験OK | 未経験の転職専用 | 経験者向け |
公開の求人数 | ITエンジニア全体で1万件以上 ITエンジニア未経験で600件以上 |
未公開 | 5,000件以上 |
利用対象 | 全職種 | IT特化 | IT特化 |
特徴 | ✓誰もが知る転職サービス ✓経歴を登録しておくとオファーが来る |
✓企業担当者と条件交渉 ✓スキルの身につく企業を紹介 |
✓IT専門のエージェントが対応 ✓転職成功すると年収200万円以上の大幅アップがある |
転職サポート内容 |
|
|
|
公式サイト | リクナビネクスト | テックゲート | レバテックキャリア |