【Python】下載百度空間文章的python原始碼
純python新手寫的關於下載百度空間文章python原始碼,程式碼寫的不好,能用不能看。大家看看效果就行, 不要求程式碼的精簡程度。大牛請飄過。
下載百度空間文章python原始碼使用方法:
在cmd中輸入:> python "F:\Walkbox\Python\mywork\baidu\getArticleId - r1.py" bspeng922 6
命令格式:python 檔案存放路徑 [使用者名稱] [下載頁數]
下載頁數可以不填,不填則為全部下載。如果大於實際總頁數,則會重複下載第一頁的內容
這段程式碼只能是新版的百度空間,只測試了”低調優雅“模板,生成的是html檔案;
同時我突然發現一個奇特的功能,這段程式碼竟然可以用來刷百度空間的訪問量,不錯哦。
下載百度空間文章python原始碼,如下:
`# -*- coding: utf8 -*-` `import` `urllib` `import` `re,os,sys,time` `def` `articleDownload(username,pageCount):` `#判斷傳入的引數是否合法` `if` `username` `=``=` `"``" : username = "``bspeng922"` `if` `pageCount` `=``=` `""` `or` `int``(pageCount)<``0` `:` `pageCount` `=` `0` `else``:` `pageCount` `=` `int``(pageCount)` `+` `1` `print` `"Blog: [http://hi.baidu.com/new/%s](http://hi.baidu.com/new/%s)"``%``username` `#檔案儲存目錄,可修改` `saveDrive` `=` `"E:\\test"` `#directory to save html files` `#html檔案儲存目錄` `if` `not` `os.path.exists(saveDrive) :` `os.mkdir(saveDrive)` `mydrive` `=` `os.path.join(saveDrive,username)` `if` `not` `os.path.exists(mydrive) :` `os.mkdir(mydrive)` `#圖片儲存目錄` `imgDir` `=` `"img"` `imgPath` `=` `os.path.join(saveDrive,username,imgDir)` `if` `not` `os.path.exists(imgPath):` `os.mkdir(imgPath)` `#判斷傳入的頁數是否為0,為0則全部下載` `if` `pageCount` `=``=` `0` `:` `fstbaidu` `=` `urllib.urlopen(``"[http://hi.baidu.com/new/%s](http://hi.baidu.com/new/%s)"``%``username) ` `totalRecord,pagesize``=``0``,``0` `for` `fstline` `in` `fstbaidu: ` `if` `fstline.find(``"allCount"``)>``0``:` `#only one tag` `totalRecord` `=` `int``(fstline[fstline.index(``"'")+1:fstline.rindex("'"``)])` `if` `fstline.find(``"pageSize"``)>``0``:` `pagesize` `=` `int``(fstline[fstline.index(``"'")+1:fstline.rindex("'"``)])` `if` `pagesize !``=` `0` `and` `totalRecord !``=` `0``:` `pageCount` `=` `totalRecord``/``pagesize` `if` `totalRecord` `/` `float``(pagesize) > totalRecord``/``pagesize:` `pageCount` `=` `pageCount` `+` `2` `fstbaidu.close()` `print` `"Page Count: "``,pageCount` `-` `1` `#根據文章ID獲得文章實際連結` `articleCount` `=` `0` `sumHtmlPath` `=` `os.path.join(saveDrive,``"%s.html"``%``username)` `sumfile` `=` `open``(sumHtmlPath,``"w"``)` `#the sum file` `aTagCmp` `=` `re.``compile``(``"""<a href="/%s/item/([\w]*?)" class="a-incontent a-title cs-contentblock-hoverlink" target=_blank>(.*?)</a>"""``%``username)` `for` `page` `in` `range``(``1``,pageCount):` `thisPageUrl` `=` `urllib.urlopen(``"[http://hi.baidu.com/new/%s?page=%d](http://hi.baidu.com/new/%s?page=%d)"``%``(username,page))` `print` `"Page: "``,page` `for` `line` `in` `thisPageUrl:` `if` `line.find(``"a-incontent a-title"``)>``0` `:` `articleCount` `+``=` `1` `#部落格文章數目` `linefind` `=` `aTagCmp.findall(line)` `#print linefind` `for` `line` `in` `linefind :` `#文章的ID和名稱` `myurl` `=` `line[``0``]` `mytitle` `=` `line[``1``]` `sumfile.write(``"""<a href='%s\\%s.html' target='blank'>%s</a><br>"""``%``(username,myurl,mytitle))` `#獲得真實的文章,並儲存` `thispath` `=` `os.path.join(mydrive,``"%s.html"``%``myurl)` `thisfile` `=` `open``(thispath,``'w'``)` `thisArticle` `=` `urllib.urlopen(``"[http://hi.baidu.com/%s/item/%s](http://hi.baidu.com/%s/item/%s)"``%``(username,myurl))` `for` `thisline` `in` `thisArticle:` `imgCount` `=` `0` `badImg` `=` `0` `if` `thisline.find(``"content-head clearfix"``)>``0``:` `#只取正文` `#匹配圖片標籤` `imgTagCmp` `=` `re.``compile``(``"""<img.*?src="(.*?)".*?>"""``)` `imglist` `=` `imgTagCmp.findall(thisline)` `for` `imglink` `in` `imglist :` `imageNewPath` `=` `""` `#print imglink` `if` `imglink.find(``"""://"""``)>``0``:` `imageName` `=` `imglink[imglink.rindex(``"/"``)``+``1``:]` `#下載圖片` `try``:` `urllib.urlretrieve(imglink,os.path.join(imgPath,imageName))` `imgCount` `+``=` `1` `except` `:` `#不能下載則報錯` `print` `"cannot download this image: "``+``imageName` `#替換圖片連結` `imageNewPath` `=` `"""<img src="%s/%s" />"""``%``(imgDir,imageName)` `thisImgCmp` `=` `re.``compile``(``"""<img width="\d{1,4}" height="\d{1,4}" src="[http://.](http://./)*?/%s" />|<img src="[http://.](http://./)*?/%s" small="0" />|<img src="[http://.](http://./)*?/%s" />|<img small="0" src="[http://.](http://./)*?/%s" />"""``%``(imageName,imageName,imageName,imageName))` `#print imageNewPath` `try``:` `#print thisImgCmp.findall(thisline)` `thisline` `=` `thisImgCmp.sub(imageNewPath,thisline)` `#每次都對當前圖片標籤進行替換` `#print thisline` `except``:` `print` `"UnExpect error"` `else``:``#www.iplaypy.com` `badImg` `+``=` `1` `#刪除多餘的內容` `pos` `=` `thisline.find(``"mod-post-info clearfix"``)` `if` `pos>``0` `:` `thisline` `=` `thisline[``0``:pos``-``12``]` `thisfile.write(thisline.strip()) ` `thisfile.close()` `thisArticle.close()` `#print "Image Count: %d Bad Image: %d"%(imgCount, badImg)` `thisPageUrl.close()` `sumfile.close()` `print` `"Article Count: "``,articleCount` `if` `__name__` `=``=` `"__main__"``:` `st` `=` `time.time()` `#獲得命令列引數` `if` `len``(sys.argv)` `=``=` `2``:` `uname` `=` `sys.argv[``1``]` `pages` `=` `0` `elif` `len``(sys.argv)>``2``:` `uname` `=` `sys.argv[``1``]` `pages` `=` `int``(sys.argv[``2``])``+``1` `else``:` `uname` `=` `raw_input``(``"Username -> "``)` `pages` `=` `raw_input``(``"Page -> "``)` `articleDownload(uname,pages)` `et` `=` `time.time()` `print` `"Time used: %0.2fs"``%``(et``-``st)`
大家在學python的時候肯定會遇到很多難題,以及對於新技術的追求,這裡推薦一下我們的Python資源分享秋秋裙:855408893 內有安裝包,學習視訊資料,免費直播實戰案例。這裡是Python學習者的聚集地,零基礎,進階,都歡迎每日分享一些學習的方法和需要注意的小細節
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913713/viewspace-2649420/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python爬蟲:批量下載qq空間裡的照片(一)Python爬蟲
- 基於Python的QQ空間相簿中的所有照片下載器Python
- 如何利用python原始碼下載進行下單?Python原始碼
- repo下載Android原始碼時報 python windowserror 5Android原始碼PythonWindowsError
- Python 的名稱空間Python
- python原始碼包怎麼下載?方便安裝嗎?Python原始碼
- 《Python資料分析與挖掘實戰》原始碼下載Python原始碼
- python名稱空間Python
- Python 名稱空間Python
- python 爬蟲 下載百度美女圖片Python爬蟲
- 【Python】Python 使用http時間同步設定系統時間原始碼PythonHTTP原始碼
- Python名稱空間包Python
- python web開發視訊百度網盤下載?PythonWeb
- 【python】locals()、globals()與名字空間Python
- python基礎 - python名稱空間與作用域Python
- python下載模組Python
- QQ空間相簿批量下載【原圖】
- AOSP 原始碼下載原始碼
- 下載開原始碼原始碼
- 由一個例子到python的名字空間Python
- Python作用域和名稱空間Python
- Python名稱空間例項解析Python
- Python - 使用__slots__節省空間Python
- HSV顏色空間下的圖片相似性計算(python版)Python
- TP開發的原始碼下載站系統,素材下載站原始碼系統,線上下載原始碼系統原始碼
- python tkinter 超級瑪麗原始碼下載顏色碰撞檢測試程式.pyPython原始碼
- 怎麼下載python的庫Python
- Python實戰專案:打乒乓(原始碼分享)(文章較短,直接上程式碼)Python原始碼
- 如何用 Python 指令碼批量下載 Google 影象?Python指令碼Go
- Python 下載圖片Python
- python下載包(pycharm)PythonPyCharm
- python 各版本下載Python
- Python OpenCV中色彩空間的轉換型別PythonOpenCV型別
- 原始碼的下載與編譯原始碼編譯
- python之 centos6.7下 python 3.5.2 原始碼、Django-1.9 安裝PythonCentOS原始碼Django
- Python中名稱空間包簡介Python
- Android 原始碼下載Android原始碼
- 如何用Python爬蟲實現百度圖片自動下載?Python爬蟲