細かすぎて伝わらない一秒でクローラーになるワンライナ
いきなりずるいワンライナーでごめんなさいmm
注意事項
Webスクレイピングの注意事項一覧
を一読してから実行してください。
自己責任でお願いします。
やっていること
- sitemapから
<loc></loc>
を抜き出してその内容をファイルに書き出す - sleepを3秒ずついれている
- 取得したコンテンツの内容をshell実行直下のファイルに書き出している
- ネストしたsitemap用に書いています。単体のsitemapの場合は個人で工夫してください
細かすぎて伝わらない一秒でクローラーになるワンライナ
URL="{取得したいサイトのURL}";[ -e site_map_urls.txt ] && rm -rf site_map_urls.txt; for xml_sitemap_url in $(curl -s "$URL" | grep "<loc>.*</loc>"|sed -e s/\<\\/loc\>//g | sed -e "s/<loc>//g" | tr -d '\t'); do for url in $(curl -s "$xml_sitemap_url" | grep "<loc>.*</loc>"| sed -e s/\<\\/loc\>//g | sed -e "s/<loc>//g"|tr -d '\t'); do echo $url >> site_map_urls.txt; done; done; for url in `cat site_map_urls.txt | sort | uniq`; do file_name=$(echo $url | tr ":" "-" | tr "/" "-"); curl -sS $url > "$file_name.txt"; sleep 3; done;
原文
#!/usr/bin/env bash
URL="{取得したいサイトのsitemapurl}";[ -e site_map_urls.txt ] && rm -rf site_map_urls.txt;
rm -f site_map_urls.txt;
for xml_sitemap_url in $(curl -s "$URL" | grep "<loc>.*</loc>"|sed -e s/\<\\/loc\>//g | sed -e "s/<loc>//g" | tr -d '\t')
do
for url in $(curl -s "$xml_sitemap_url" | grep "<loc>.*</loc>"| sed -e s/\<\\/loc\>//g | sed -e "s/<loc>//g"|tr -d '\t')
do
echo $url >> site_map_urls.txt
done
done
for url in `cat site_map_urls.txt | sort | uniq`; do file_name=$(echo $url | tr ":" "-" | tr "/" "-"); curl -sS $url > "$file_name.txt"; sleep 3; done;