做为一个个人站长,经常要为博客或网站的收录头疼,我也是经常发现我的博客百度并没有收录,于是我依照百度站长上的sitemap.xml的格式,自己写了一个Shell脚本来抓取博客文章地址并自动生成一个sitemap.xml文件,只要将这个文件提交给百度站长,并修改这个脚本把这个脚本放在服务器上的crontab里就可以自动生成了。这个脚本的思路很简单,通过读取Archives里的页面地址进行分析和抓取这些页面上的文章链接。并将这些链接通这脚本写入到sitemap.xml文件里边去。
执行脚本的方法
bash baidu-sitemap.sh https://blog.com OR sh baidu-sitemap.sh https://blog.com OR chmod 777 baidu-sitemap.sh ./baidu-sitemap.sh https://blog.com #脚本后边必须跟随着您要抓取的网站,不能以/结尾
完整的baidu脚本代码
#! /bin/bash #This WordPress baidu Sitemap tools #autor:RucLinux #web: https://www.myzhenai.com.cn https://jiayu.mybabya.com https://mangshe.python.hn.cn url="${1}" phat="/home/sitemap.xml" xml="< ?xml version=\"1.0\" encoding=\"utf-8\"?>" st="" ul=" " ni=$(date +20%y-%m-%d) x=0 if [ ! -f "${phat}" ]; then echo -e "${xml}\n${st}" > ${phat} fi if [ ! -n "${1}" ]; then echo "error! Please enter the domain name you want to enumerate" else sed -i "/< \/urlset>/d" ${phat} page=$(curl -s ${1}|grep \/post\/date\/|awk -F "'" '{ print $2 }'|awk -F "'" '{ print $1 }') arr=(${page}) for i in ${arr[@]} do loc=$(curl -s ${i}|grep -Eo \/post\/'[0-9]+'.html) #sleep 10s #这里再进一次循环 uarr=(${loc}) for ii in ${uarr[@]} do #在这里对所获取的页面里的网址与sitemap.xml里的网址进行对比,如果没有再写入,如果存在就抛弃 pan=$(cat ${phat}|grep "${ii}") if [[ ${pan} == "" ]]; then echo -e "${ul}\n${lo}${ii}${lc}\n${mod}${ni}${tmod}\n${req}${dai}${freq}\n${pri}\n${ur}" >> ${phat} # x++ #${st}参数要写在输入的前边, ${se}参数要写在结尾。 fi done done echo "${se}" >> ${phat} fi" lo=" " se="${url}" lc=" " mod="" tmod=" " req="" dai="daily" freq=" " pri="0.8 " ur="
Google版本完整源码
#! /bin/bash #This WordPress Google Sitemap tools #autor:RucLinux #web: https://www.myzhenai.com.cn https://jiayu.mybabya.com https://mangshe.python.hn.cn url="${1}" phat="/home/sitemap.txt" lo="${url}" if [ ! -n "${1}" ]; then echo "error! Please enter the domain name you want to enumerate" else page=$(curl -s ${1}|grep \/post\/date\/|awk -F "'" '{ print $2 }'|awk -F "'" '{ print $1 }') arr=(${page}) for i in ${arr[@]} do loc=$(curl -s ${i}|grep -Eo \/post\/'[0-9]+'.html) uarr=(${loc}) for ii in ${uarr[@]} do pan=$(cat ${phat}|grep "${ii}") if [[ ${pan} == "" ]]; then echo -e "${lo}${ii}" >> ${phat} fi done done fi
sicnature ---------------------------------------------------------------------
I P 地 址: 3.22.77.107
区 域 位 置: 美国
系 统 信 息:
Original content, please indicate the source:
同福客栈论坛 | 蟒蛇科普 | 海南乡情论坛 | JiaYu Blog
sicnature ---------------------------------------------------------------------
Welcome to reprint. Please indicate the source http://myzhenai.com/post/2871.html
1 评论
baidu
https://jiayu.mybabya.com/sitemap.xml
https://www.mybabya.com/wsitemap.xml
https://www.myzhenai.com.cn/sitemap.xml
https://www.python.hn.cn/sitemap.xml
https://mangshe.python.hn.cn/sitemap.xml
google
https://jiayu.mybabya.com/sitemap.txt
https://www.myzhenai.com.cn/sitemap.txt
https://www.mybabya.com/sitemap.txt
https://www.python.hn.cn/sitemap.txt
https://mangshe.python.hn.cn/sitemap.txt