[Pythonの]記事Baiduの宇宙Pythonのソースコードをダウンロードしてください

純粋なのpython新しい悪い手書きで書かれたPythonのソースコードをダウンロードするにBaiduのスペースの記事では、見ることができません。私たちは、ライン上の効果を見て、コードを合理化する程度を必要としません。ダニエルが漂います。

使用する記事Baiduの宇宙Pythonのソースコードをダウンロードしてください:
CMD入力に:> pythonの"F:\ Walkbox \ Pythonの\ MYWORK \ Baiduの\ getArticleId - r1.py " bspeng922 6
コマンド形式:pythonのファイルストレージ・パス[ユーザー名] [ダウンロードページ番号]
塗りつぶし、ページを埋めることができないダウンロードするには、すべてのダウンロードはなかったです。ページの実際の合計数よりも大きい場合には、ダウンロード可能なコンテンツの最初のページを繰り返します

このコードは、HTMLファイルを生成するためにテストのみ「控えめなエレガンス」テンプレートBaiduのスペースの新しいバージョンであることができ;
そして、私は突然、独特の機能を発見し、このコードは実際には良い、Baiduのスペースを訪問したブラシに使用することができますああ。

以下のように、記事Baiduの宇宙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の爬虫類学習ルート、それが強く推奨される11のこのコレクション

なぜPythonはしっかりと最初のカードAI人工知能言語を確保することができます

Pythonの上昇、新しい高プログラミング言語のTIOBEリスト!

おすすめ

転載: blog.csdn.net/kkk123789/article/details/93523866