快速找到厂子搬砖

不要一个个学校网站上找老师了,太浪费时间。上 mathematical reviews 找你对应你个人陈述写的领域的引用最高的教授。

首先,假装是个地球人。

alias curl='curl -sS -H "Host: mathscinet.ams.org" \
  -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.9) Gecko/201Goanna/3.4 Firefox/52.9 PaleMoon/27.6.2" \
  -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" \
  -H "Accept-Language: en-US,en;q=0.5" -H "Connection: keep-alive" \
  -c /tmp/mrcookiejar -b /tmp/mrcookiejar'
prefix="https://mathscinet.ams.org"

把 msc 的编号放到 cls 这个文件里(一行一个分类号,用你知道的文章找分类号)。

for cls in $(cat cls); do
    cls=$(xargs <<< "$cls")
    curl "$prefix/mathscinet/search/publications.html?arg3=&batch_title=Selected%20Matches%20for%3A%20MSC%20Primary%2FSecondary%3D%28${cls}%29&co4=AND&co5=AND&co6=AND&co7=AND&dr=all&fmt=doc&pg4=ALLF&pg5=TI&pg6=CC&pg7=ALLF&pg8=ET&review_format=html&s4=&s5=&s6=${cls}&s7=&s8=All&searchin=&sort=citations&vfpref=html&yearRangeFirst=&yearRangeSecond=&yrop=eq&r=1&extend=1" \
      | grep 'mrnum' | perl -ne 'print "$1\n" if /href="(.*?)"/' \
      | perl -pe "s|^|$prefix|g" > urls_$cls
    for url in $(cat urls_$cls); do
        (curl "$url" | grep institution \
          | perl -pe "s|href=\"/mathscinet|href=\"$prefix/mathscinet|g; \
          s|<br\s*/>||g; s|;\s*<a|\n<a|g" | grep href \
          | perl -pe 's|<div.*>$||g' >> info_$cls &)
    done
done

引用最高的100篇文章的作者信息已经在 info_$cls 这些文件里。

for url in $(cat info* | tr '"' '\n' | grep code | sort | uniq); do
    (curl "$url" | sed -n '/<STRONG>/,$p' | head -n6 \
      | perl -pe 's|\s*<(.*?)>||g' >> abbreviations)
done

上面命令把所有 mathscinet 上的各机构的缩写信息保存到了文件 abbreviations。 Mathematical Reviews 的 rate limit 很低,我已经被封了。如果你觉得上面程序运行太慢,可以在把 abbreviations) 改成 abbreviations & )

cat info* | grep -E 'code=1-' > us.html

上面命令把所有所在单位是美国的教授的 mathscinet 链接保存在 us.html 文件。如果刚才生成的文件太密,看起来不舒服,用下面命令生成一个一行一个链接的 html 文件。

cat info* | grep -E 'code=1-' | sort | uniq | perl -pe 's|$|<br />|g' > us.html

你可能需要会喜欢根据学校排下序。

nl < us.html | perl -pe 's|\s*([0-9]+)\s+.*(\(.*?\)).*|\1 \2|g' \
  | sort -k 2 | awk '{print $1}' | xargs -I _ sed -ne '_p' us.html > us.sorted.html

现在你可以用浏览器打开文件 us.sorted.html

2017-12-13-132447_665x443_scrot.png

另外你可以用如下命令给所有的学校按照被引用数高的人的总数排个序,文件保存在 institute_rank

cat info* | perl -ne 'print "$1 $2\n" if /authid=([0-9]*)".*(\(.*?\))/' | sort \
  | uniq | perl -lane 'print "@F[1]"' | sort | uniq -c | sort -nr > institute_rank

完整脚本在此。打开终端,输入如下命令运行之。

cd 把我改成brickyard.sh所在的目录
bash brickyard.sh
Publié le par v dans «misc». Mots-clés: grad school