摘要:步驟主要是建立一個(gè),然后分三步創(chuàng)建一個(gè)以日期的文件訪問頁面然后抓取關(guān)注語言的寫入文件部署代碼寫完了,然后就可以部署了,當(dāng)然你可以放在自己的電腦上跑。但是這是個(gè)每天的定時(shí)任務(wù),所以不能關(guān)機(jī)比較尷尬。
緣起
Github Trending基本上是我每天都會(huì)瀏覽的網(wǎng)頁,上面會(huì)及時(shí)發(fā)布一些GIthub上比較有潛力的項(xiàng)目,或者說每日Star數(shù)增量排行榜。
不過由于Github Trending經(jīng)常會(huì)實(shí)時(shí)更新,即使你訪問得再勤,難免還是會(huì)錯(cuò)過一些你感興趣的項(xiàng)目,為此不少人都想出了自己的解決辦法,例如
josephyzhou ,他的 github-trending 項(xiàng)目得到了眾多人的青睞,我仔細(xì)閱讀了他的源碼 (Go),發(fā)現(xiàn)實(shí)現(xiàn)也較為簡單, 就用Python 重寫了一下,發(fā)現(xiàn)代碼少了好多,詳見 我的 github-trending。
主要是建立一個(gè)Job,然后分三步:
創(chuàng)建一個(gè)以 日期.md 的文件
訪問Github-Trending 頁面 然后抓取關(guān)注語言的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)部署
代碼寫完了,然后就可以部署了,當(dāng)然你可以放在自己的電腦上跑。但是這是個(gè)每天的定時(shí)任務(wù),所以不能關(guān)機(jī)比較尷尬。比較好的辦法是部署到VPS,具體主機(jī)商就不推薦了,反正就這幾家,大家隨意。部署之前記得先將VPS 的 SSH key 添加到Github 的信任列表,這樣這個(gè)代碼就可以順利跑起來啦!
$ git clone https://github.com/bonfy/github-trending.git $ cd github-trending $ pip install -r requirements.txt $ python scraper.py一般人我不告訴
還有個(gè)好處,偷偷告訴你們,這代碼是每天定時(shí)跑的,所以每天都會(huì)Commit 到Github上,想象一下吧,一年之后你的Github下面的Commit 一欄將是多么的美觀??!所以趕快去Star 我的項(xiàng)目,行動(dòng)起來吧,少年!
項(xiàng)目地址: https://github.com/bonfy/github-trending
歡迎大家Star
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/38431.html
摘要:張鑫旭老師的文章寫的很棒,解決了我的許多困惑。所以,基礎(chǔ)知識(shí)的牢固就顯得尤為重要是個(gè)不怎么聽話的孩子,總是會(huì)搞出一些奇奇怪怪的事情來張鑫旭老師十年磨一劍,鉆研的魔法,可見其中技術(shù)細(xì)節(jié)有多復(fù)雜。 ??從實(shí)習(xí)算起,到現(xiàn)在工作了也有一年半的時(shí)間了,在這期間,深深感受到了前端領(lǐng)域的飛速發(fā)展,在這里記錄一下自己的成長歷程,算是對知識(shí)的一個(gè)梳理,也希望幫助到剛?cè)胄械耐瑢W(xué)們。說來慚愧,大學(xué)里并沒有涉...
摘要:張鑫旭老師的文章寫的很棒,解決了我的許多困惑。所以,基礎(chǔ)知識(shí)的牢固就顯得尤為重要是個(gè)不怎么聽話的孩子,總是會(huì)搞出一些奇奇怪怪的事情來張鑫旭老師十年磨一劍,鉆研的魔法,可見其中技術(shù)細(xì)節(jié)有多復(fù)雜。 ??從實(shí)習(xí)算起,到現(xiàn)在工作了也有一年半的時(shí)間了,在這期間,深深感受到了前端領(lǐng)域的飛速發(fā)展,在這里記錄一下自己的成長歷程,算是對知識(shí)的一個(gè)梳理,也希望幫助到剛?cè)胄械耐瑢W(xué)們。說來慚愧,大學(xué)里并沒有涉...
摘要:寫的人越來越想,閱讀的人越來越多的這個(gè)信息冗余的年代,會(huì)寫就代表會(huì)思考轉(zhuǎn)載保留程序員為什么值得寫博客為什么要寫博文寫一篇博文意味著要花一定的時(shí)間,有時(shí)候可能是一個(gè)小時(shí),有時(shí)候可能會(huì)更多,于是人們開始去。 Hire Great Writers 仿佛這是寫給自己看的,不過這在其中也有著相當(dāng)有趣的意義 。雖然自己算是一個(gè)能寫的人,或許這算是一種不算才華的才華,寫博文的意義通常不會(huì)在于去描述...
摘要:前言月份開始出沒社區(qū),現(xiàn)在差不多月了,按照工作的說法,就是差不多過了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了一般來說,差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議那么今天我就把看過的一些學(xué)習(xí)資源主要是博客,博文推薦分享給大家。 1.前言 6月份開始出沒社區(qū),現(xiàn)在差不多9月了,按照工作的說法,就是差不多過了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了!一般來說,差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議!那么今天我就...
閱讀 994·2021-11-22 11:59
閱讀 3398·2021-11-17 09:33
閱讀 2577·2021-09-29 09:34
閱讀 2109·2021-09-22 15:25
閱讀 2084·2019-08-30 15:55
閱讀 1452·2019-08-30 15:55
閱讀 666·2019-08-30 15:53
閱讀 3496·2019-08-29 13:55