Python爬取CSDN博客文章

編程語言 Python CSDN 文章 代碼黑客 2017-05-14

CSDN的Python創意編程活動開始第一天就看到了,但是認為自己是菜鳥,就向當“吃瓜群眾”,後來看到有好多人的代碼是關於爬蟲的,當初我就是由於對爬蟲 感興趣才自學的Python。現在也打算參加一下這個活動。

由於經常使用CSDN,所以收藏了好多優秀的文章,但是對於收藏夾沒有整理好,要回去找之前收藏的文章不是很方便,經過研究,就用自學的簡單Python爬蟲幫我吧。

去到首頁一看,收藏的文章是算是異步加載的吧。。但是每次都要點擊“顯示更多"才能看到後面的內容。

Python爬取CSDN博客文章

幸運的是我也知道一點異步加載的知識,就按F12進行研究:瀏覽後一些內容以後

Python爬取CSDN博客文章

雙擊打開Name下的鏈接:

Python爬取CSDN博客文章

現在來研究一下那個鏈接,

http://my.csdn.NET/my/favorite/get_favorite_list?pageno=2&pagesize=10&username=hurmishine

經過測試後發現,pageno這個參數控制顯示頁面起始編號,pagesize就是每頁顯示的數據條數。

我們可以通過改變參數來獲取全部信息。

最後確定的鏈接為:

http://my.csdn.Net/my/favorite/get_favorite_list?pageno=0&pagesize=10000&username=hurmishine

pagesize儘量設大一點,如果收藏的實際數量少於參數,將會以實際數量顯示。

對於每一條數據:

  1. {"id":"12653825","username":"hurmishine","url":"http:\/\/blog.csdn.net\/marksinoberg\/article\/details\/70946107","domain":"blog.csdn.net","title":"CSDN 博客備份工具 - 更上一層樓! - 博客頻道 - CSDN.NET","description":"","share":"1","dateline":"1493451002","map_name":""},

對於我來說有用的只有url和title,我們用正則表達式匹配出來即可。

完整代碼如下,具體細節自己體會:

  1. #coding:utf-8

  2. import urllib,urllib2,re,cookielib

  3. def saveByText():

  4. f=open("html.html")#保存到本地的文件名

  5. html = f.read();

  6. #"url":"http:\/\/blog.csdn.net\/zhangweiguo_717\/article\/details\/52716677",

  7. #"title":"Python模擬登錄CSDN - 博客頻道 - CSDN.NET",

  8. # urls = re.findall(r'"url":"(.*?)",',html)

  9. # links = re.findall(r'"title":"(.*?)",',html)

  10. links = re.findall(r'"url":"(.*?)",.*?"title":"(.*?)"',html)

  11. f2=open("index.html","w")

  12. f2.write("<meta charset='utf-8'>\r\n")

  13. index=0

  14. for link in links :

  15. ans=link[1].decode('unicode-escape').encode('utf-8')

  16. # print ans

  17. ans=ans.replace(' - 博客頻道 - CSDN.NET','').replace("\/",'/')

  18. # print ans

  19. url = link[0].replace("\/",'/')

  20. index+=1

  21. f2.write('<font size="5">'+' '*10+str(index)+"、</font>"+"\n<a href="+url+' target="_blank">'+'\n')

  22. f2.write('<font size="5">'+ans+"</font></a><br><br><br>\n\n")

  23. f2.close()

  24. if __name__ == '__main__':

  25. saveByText()

結果顯示:

Python爬取CSDN博客文章

Python爬取CSDN博客文章

相關推薦

推薦中...