摘要:步驟主要是建立一個,然后分三步創(chuàng)建一個以日期的文件訪問頁面然后抓取關注語言的寫入文件部署代碼寫完了,然后就可以部署了,當然你可以放在自己的電腦上跑。但是這是個每天的定時任務,所以不能關機比較尷尬。
緣起
Github Trending基本上是我每天都會瀏覽的網(wǎng)頁,上面會及時發(fā)布一些GIthub上比較有潛力的項目,或者說每日Star數(shù)增量排行榜。
不過由于Github Trending經(jīng)常會實時更新,即使你訪問得再勤,難免還是會錯過一些你感興趣的項目,為此不少人都想出了自己的解決辦法,例如
josephyzhou ,他的 github-trending 項目得到了眾多人的青睞,我仔細閱讀了他的源碼 (Go),發(fā)現(xiàn)實現(xiàn)也較為簡單, 就用Python 重寫了一下,發(fā)現(xiàn)代碼少了好多,詳見 我的 github-trending。
主要是建立一個Job,然后分三步:
創(chuàng)建一個以 日期.md 的文件
訪問Github-Trending 頁面 然后抓取關注語言的Trending List 寫入 md文件
Git Add + Commit + Push
Jobdef job(): strdate = datetime.datetime.now().strftime("%Y-%m-%d") filename = "{date}.md".format(date=strdate) # create markdown file createMarkdown(strdate, filename) # write markdown scrape("python", filename) scrape("swift", filename) scrape("javascript", filename) scrape("go", filename) # git add commit push git_add_commit_push(strdate, filename)create markdown
def createMarkdown(date, filename): with open(filename, "w") as f: f.write("###" + date + " ")write markdown
def scrape(language, filename): HEADERS = { "User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:11.0) Gecko/20100101 Firefox/11.0", "Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Encoding" : "gzip,deflate,sdch", "Accept-Language" : "zh-CN,zh;q=0.8" } url = "https://github.com/trending/{language}".format(language=language) r = requests.get(url, headers=HEADERS) assert r.status_code == 200 d = pq(r.content) items = d("ol.repo-list li") # codecs to solve the problem utf-8 codec like chinese with codecs.open(filename, "a", "utf-8") as f: f.write(" ####{language} ".format(language=language)) for item in items: i = pq(item) title = i("h3 a").text() owner = i("span.prefix").text() description = i("p.col-9").text() url = i("h3 a").attr("href") url = "https://github.com" + url f.write(u"* [{title}]({url}):{description} ".format(title=title, url=url, description=description))git operations
def git_add_commit_push(date, filename): cmd_git_add = "git add {filename}".format(filename=filename) cmd_git_commit = "git commit -m "{date}"".format(date=date) cmd_git_push = "git push -u origin master" os.system(cmd_git_add) os.system(cmd_git_commit) os.system(cmd_git_push)部署
代碼寫完了,然后就可以部署了,當然你可以放在自己的電腦上跑。但是這是個每天的定時任務,所以不能關機比較尷尬。比較好的辦法是部署到VPS,具體主機商就不推薦了,反正就這幾家,大家隨意。部署之前記得先將VPS 的 SSH key 添加到Github 的信任列表,這樣這個代碼就可以順利跑起來啦!
$ git clone https://github.com/bonfy/github-trending.git $ cd github-trending $ pip install -r requirements.txt $ python scraper.py一般人我不告訴
還有個好處,偷偷告訴你們,這代碼是每天定時跑的,所以每天都會Commit 到Github上,想象一下吧,一年之后你的Github下面的Commit 一欄將是多么的美觀啊!所以趕快去Star 我的項目,行動起來吧,少年!
項目地址: https://github.com/bonfy/github-trending
歡迎大家Star
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/38431.html
摘要:張鑫旭老師的文章寫的很棒,解決了我的許多困惑。所以,基礎知識的牢固就顯得尤為重要是個不怎么聽話的孩子,總是會搞出一些奇奇怪怪的事情來張鑫旭老師十年磨一劍,鉆研的魔法,可見其中技術細節(jié)有多復雜。 ??從實習算起,到現(xiàn)在工作了也有一年半的時間了,在這期間,深深感受到了前端領域的飛速發(fā)展,在這里記錄一下自己的成長歷程,算是對知識的一個梳理,也希望幫助到剛入行的同學們。說來慚愧,大學里并沒有涉...
摘要:張鑫旭老師的文章寫的很棒,解決了我的許多困惑。所以,基礎知識的牢固就顯得尤為重要是個不怎么聽話的孩子,總是會搞出一些奇奇怪怪的事情來張鑫旭老師十年磨一劍,鉆研的魔法,可見其中技術細節(jié)有多復雜。 ??從實習算起,到現(xiàn)在工作了也有一年半的時間了,在這期間,深深感受到了前端領域的飛速發(fā)展,在這里記錄一下自己的成長歷程,算是對知識的一個梳理,也希望幫助到剛入行的同學們。說來慚愧,大學里并沒有涉...
摘要:寫的人越來越想,閱讀的人越來越多的這個信息冗余的年代,會寫就代表會思考轉(zhuǎn)載保留程序員為什么值得寫博客為什么要寫博文寫一篇博文意味著要花一定的時間,有時候可能是一個小時,有時候可能會更多,于是人們開始去。 Hire Great Writers 仿佛這是寫給自己看的,不過這在其中也有著相當有趣的意義 。雖然自己算是一個能寫的人,或許這算是一種不算才華的才華,寫博文的意義通常不會在于去描述...
摘要:前言月份開始出沒社區(qū),現(xiàn)在差不多月了,按照工作的說法,就是差不多過了三個月的試用期,準備轉(zhuǎn)正了一般來說,差不多到了轉(zhuǎn)正的時候,會進行總結或者分享會議那么今天我就把看過的一些學習資源主要是博客,博文推薦分享給大家。 1.前言 6月份開始出沒社區(qū),現(xiàn)在差不多9月了,按照工作的說法,就是差不多過了三個月的試用期,準備轉(zhuǎn)正了!一般來說,差不多到了轉(zhuǎn)正的時候,會進行總結或者分享會議!那么今天我就...
閱讀 826·2021-11-22 11:59
閱讀 3230·2021-11-17 09:33
閱讀 2308·2021-09-29 09:34
閱讀 1941·2021-09-22 15:25
閱讀 1955·2019-08-30 15:55
閱讀 1321·2019-08-30 15:55
閱讀 530·2019-08-30 15:53
閱讀 3346·2019-08-29 13:55