python定期爬取GitHub上每日流行項(xiàng)目

個人主頁:http://hellogod.cn

本文永久更新地址:博客:http://hellogod.cn

介紹一個在GitHub上看到的通用的python爬蟲,難度不大吼砂,是一個蠻好玩的點(diǎn),順便總結(jié)一下python爬蟲的一些需要注意的點(diǎn)桅打。
先上鏈接:github源碼

1. 項(xiàng)目簡介

大家可以看一下這個網(wǎng)站 https://github.com/trending

隨時關(guān)注最新的技術(shù)動向浪南,永遠(yuǎn)是一個程序員應(yīng)該做到的,但我們不能做到每天去查看溢谤,于是就誕生了這個repo(更正為原作者寫了這個repo),我們將爬蟲掛在Linux服務(wù)器上憨攒,定期爬取并且推送到自己的repo上世杀,只要有時間,就可以看到之前的所有熱門項(xiàng)目肝集。

順便說一句這樣是不是還可以刷一波GitHub commit

代碼po在了最后面

2. 關(guān)于python的私人總結(jié)

使用python開發(fā)爬蟲的時候需要注意哪些瞻坝?

1.區(qū)分python版本

python 2.x 3.x 差別很大,如果遇到就編譯通不過杏瞻,及早意識到進(jìn)行修正還好所刀,若是語法差別不大卻沒有意識到,有時候會給自己惹來很大的麻煩

2.關(guān)注幾種易于混淆的數(shù)據(jù)類型

  • Tuples
  • Lists
  • Dictionary
  • Json
    需要格外關(guān)注這幾種類型之間的轉(zhuǎn)換捞挥,我們知道python是一種弱數(shù)據(jù)類型語言浮创,但不代表著它的數(shù)據(jù)類型可以混用,反而砌函,正因?yàn)槿趸寺暶髡杜抛層行┎僮鞲尤菀壮鲥e,這時候我們需要做的胸嘴,就是仔細(xì)閱讀文檔雏掠,熟悉不同的用法。


    Tuples
Lists
Dictionary

推薦文檔:Tuples, Lists, and Dictionaries

3.注意合理使用第三方類庫

python相對于java等語言劣像,最大的優(yōu)勢就在于其具有很大規(guī)模的封裝良好的類庫,可以讓我們使用短短的幾行代碼摧玫,實(shí)現(xiàn)很多功能耳奕。這里列舉幾個常用的庫和框架:

3. 代碼

下面是注釋版代碼降狠,python2.7 用了requests PyQuery等幾個類庫
代碼寫的比較明確了对竣,就沒有過多注釋

#!/usr/local/bin/python2.7
# coding:utf-8

import datetime
import codecs
import requests
import os
import time
from pyquery import PyQuery as pq

#git操作 推送到遠(yuǎn)程repo
def git_add_commit_push(date, filename):
    cmd_git_add = 'git add .'
    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)


def createMarkdown(date, filename):
    with open(filename, 'w') as f:
        f.write("###" + date + "\n")


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
    # print(r.encoding)

    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('\n####{language}\n'.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
            # ownerImg = i("p.repo-list-meta a img").attr("src")
            # print(ownerImg)
            f.write(u"* [{title}]({url}):{description}\n".format(title=title, url=url, description=description))
#定時爬取對應(yīng)語言的并寫入到markdown文本中
def 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)
    scrape('Objective-C', filename)
    scrape('Java', filename)
    scrape('C++', filename)
    scrape('C#', filename)

    # git add commit push
    git_add_commit_push(strdate, filename)
#主函數(shù)
if __name__ == '__main__':
    while True:
        job()
        time.sleep(12 * 60 * 60)

4. 擴(kuò)展及埋坑 下集預(yù)告

這里分享幾個python相關(guān)的重要鏈接庇楞,看了一定會有收獲(尤其是前兩者),而且很大否纬,沒效果你回來打我(匿

下面準(zhǔn)備把oschina一個類似的東西一塊爬一下吕晌,push到repo里

接下來準(zhǔn)備寫一個爬取學(xué)校教務(wù)系統(tǒng)驗(yàn)證碼并訓(xùn)練識別的文章,敬請期待临燃。

歡迎各位在評論區(qū)批評指正 若是覺得碼字不易膜廊,也可以贊賞啊Orz

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乏沸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子爪瓜,更是在濱河造成了極大的恐慌蹬跃,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钥勋,死亡現(xiàn)場離奇詭異炬转,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)算灸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門扼劈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人菲驴,你說我怎么就攤上這事荐吵。” “怎么了赊瞬?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵先煎,是天一觀的道長。 經(jīng)常有香客問我巧涧,道長薯蝎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任谤绳,我火速辦了婚禮占锯,結(jié)果婚禮上檬洞,老公的妹妹穿的比我還像新娘摔笤。我一直安慰自己,他們只是感情好章钾,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布瞎抛。 她就那樣靜靜地躺著艺演,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上胎撤,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天晓殊,我揣著相機(jī)與錄音,去河邊找鬼哩照。 笑死挺物,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的飘弧。 我是一名探鬼主播识藤,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼次伶!你這毒婦竟也來了痴昧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤冠王,失蹤者是張志新(化名)和其女友劉穎赶撰,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柱彻,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡豪娜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了哟楷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘤载。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖卖擅,靈堂內(nèi)的尸體忽然破棺而出鸣奔,到底是詐尸還是另有隱情,我是刑警寧澤惩阶,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布挎狸,位于F島的核電站,受9級特大地震影響断楷,放射性物質(zhì)發(fā)生泄漏锨匆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一冬筒、第九天 我趴在偏房一處隱蔽的房頂上張望统刮。 院中可真熱鬧,春花似錦账千、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至学搜,卻和暖如春娃善,著一層夾襖步出監(jiān)牢的瞬間论衍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工聚磺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坯台,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓瘫寝,卻偏偏與公主長得像蜒蕾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子焕阿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,448評論 6 428
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,749評論 25 707
  • 寒假回家的路上…很平淡的心情暮屡,似乎沒有初中在學(xué)校呆一個星期都會那么的迫切想回家撤摸,而且離家也不遠(yuǎn)。也許是因?yàn)樵谕饷胬?..
    小艾格閱讀 248評論 0 3
  • 偶然翻到首很老的歌褒纲,《Welcome To the Black Parade》准夷,很久沒有這么燃燒的感覺了,好像歌詞...
    繡冬Neverland閱讀 430評論 0 4
  • 有的時候我們想的很近莺掠,有的時候我們想的又很遠(yuǎn)衫嵌。 每天都被忙碌和忙碌壓著,被著密不透風(fēng)黑繭包裹著汁蝶。偶爾想起自己還有那...
    riverwww閱讀 372評論 0 0