Python爬虫自动获取CSDN博客收藏文章

2017年05月12日 11:09:10


CSDN的Python创意编程活动开始第一天就看到了,但是认为自己是菜鸟,就向当“吃瓜群众”,后来看到有好多人的代码是关于爬虫的,当初我就是由于对爬虫 感兴趣才自学的Python。现在也打算参加一下这个活动。

由于经常使用CSDN,所以收藏了好多优秀的文章,但是对于收藏夹没有整理好,要回去找之前收藏的文章不是很方便,经过研究,就用自学的简单Python爬虫帮我吧。

去到首页一看,收藏的文章是算是异步加载的吧。。但是每次都要点击“显示更多"才能看到后面的内容。


幸运的是我也知道一点异步加载的知识,就按F12进行研究:浏览后一些内容以后


双击打开Name下的链接:



什么鬼,这是什么东西,我看不懂呀!其实这是unicode编码,要换成中文也很简单:在命令行就可以转换


当然,还有一个更好的方法,一个好用的网页: http://tool.chinaz.com/tools/unicode.aspx

可以实现在线转码的功能。把那个网页的第一条信息复制进来,点击unicode转中文,就可以看到中文了。


现在来研究一下那个链接,

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尽量设大一点,如果收藏的实际数量少于参数,将会以实际数量显示。

对于每一条数据:

{"id":"12653825","username":"hurmishine","url":"http:\/\/blog.csdn.net\/marksinoberg\/article\/details\/70946107","domain":"blog.csdn.net","title":"CSDN \u535a\u5ba2\u5907\u4efd\u5de5\u5177 - \u66f4\u4e0a\u4e00\u5c42\u697c\uff01 - \u535a\u5ba2\u9891\u9053 - CSDN.NET","description":"","share":"1","dateline":"1493451002","map_name":""},

对于我来说有用的只有url和title,我们用正则表达式匹配出来即可。

完整代码如下,具体细节自己体会:

#coding:utf-8
import urllib,urllib2,re,cookielib

def saveByText():
	f=open("html.html")#保存到本地的文件名
	html = f.read();
	#"url":"http:\/\/blog.csdn.net\/zhangweiguo_717\/article\/details\/52716677",
	#"title":"Python\u6a21\u62df\u767b\u5f55CSDN - \u535a\u5ba2\u9891\u9053 - CSDN.NET",
	# urls = re.findall(r'"url":"(.*?)",',html)
	# links = re.findall(r'"title":"(.*?)",',html)

	links = re.findall(r'"url":"(.*?)",.*?"title":"(.*?)"',html)
	f2=open("index.html","w")
	f2.write("<meta charset='utf-8'>\r\n")
	index=0
	for link in links :
		ans=link[1].decode('unicode-escape').encode('utf-8')
		# print ans
		ans=ans.replace(' - 博客频道 - CSDN.NET','').replace("\/",'/')
		# print ans
		url = link[0].replace("\/",'/')
		index+=1
		f2.write('<font size="5">'+' '*10+str(index)+"、</font>"+"\n<a href="+url+' target="_blank">'+'\n')
		f2.write('<font size="5">'+ans+"</font></a><br><br><br>\n\n")
	f2.close()

if __name__ == '__main__':
	saveByText()
结果显示:



PS:自己也没想到自己竟然收藏了那么多的文章,其间也发现,竟然有重复的收藏文章,应该是之前的Bug的吧,还有,收藏夹或许是个罪恶的根源,总以为收藏了以后去看。。。但是实际呢?

到现在可以说是基本完成了,但是每次都要复制,有点麻烦,如果可以模拟登陆,全自动那该多好呀,但是我还不会呀,但是经过不懈的努力,终于在网上找到了模拟登陆CSDN博客成功的代码,就拿来用了....

链接地址:http://blog.csdn.net/zhangweiguo_717/article/details/52716677

虽然此次活动中备份CSDN博客的那份代码也涉及到模拟登陆:http://blog.csdn.net/Marksinoberg/article/details/70946107

自动登陆获取收藏内容代码:

#coding:utf-8
import urllib,urllib2,re,cookielib
import re
import getpass #密文输入
UA='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36'
headers = {'User-Agent':UA}  
def login(username,password):
	#建立带有cookie的opener
	cookie = cookielib.CookieJar()
	cookieProc = urllib2.HTTPCookieProcessor(cookie)
	global opener 
	opener = urllib2.build_opener(cookieProc)
	h = opener.open('https://passport.csdn.net').read().decode("utf8")
	patten1 = re.compile(r'name="lt" value="(.*?)"')
	patten2 = re.compile(r'name="execution" value="(.*?)"')
	b1 = patten1.findall(h)
	b2 = patten2.findall(h)
	global postData
	postData = {
	    'username': username,
	    'password': password,
	    'lt': b1[0],
	    'execution': b2[0],
	    '_eventId': 'submit',
	}
	
	postData= urllib.urlencode(postData)

	opener.addheaders = [('User-Agent',UA),
	                     ('Referer', 'https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn')
	                     ]
	response = opener.open('https://passport.csdn.net', data=postData)
	# response2 = opener.open('http://my.csdn.net/my/fans')  
	# text2 = response2.read()
	# print text2

def autoSave(username):
	url='http://my.csdn.net/my/favorite/get_favorite_list?pageno=0&pagesize=10000&username=hurmishine'
	# req = urllib2.Request(url=url.format(username),headers=headers)  
	# html = urllib2.urlopen(req).read()
	html = opener.open(url.format(username), data=postData).read()
	links = re.findall(r'"url":"(.*?)",.*?"title":"(.*?)"',html)
	f2=open("index.html","w")
	f2.write("<meta charset='utf-8'>\r\n")
	index=0
	flag=''
	print len(links)
	for link in links :
		ans=link[1].decode('unicode-escape').encode('utf-8')
		ans=ans.replace(' - 博客频道 - CSDN.NET','').replace("\/",'/')
		url = link[0].replace("\/",'/')
		index+=1
		print ans,url
		f2.write('<font size="5">'+' '*10+str(index)+"、</font>"+"\n<a href="+url+' target="_blank">'+'\n')
		f2.write('<font size="5">'+ans+"</font></a><br><br><br>\n\n")
	f2.close()

if __name__ == '__main__':
	username=""
	password=""
	login(username,password)
	autoSave(username)
	


好了,就这样吧。

自动获取收藏的那份代码,上传的47行有问题,注释部分忘了去除,上面代码已更正.

参考博客:http://blog.csdn.net/haichao062/article/details/8107316
http://blog.csdn.net/devil_2009/article/details/38796533

第一个Python爬虫,爬取某个新浪博客所有文章并保存为doc文档

最近开始学习Python的爬虫,本来想着从基本的各种语法开始学习的但是在逛知乎的过程中发现了一个帖子是就是关于如何入门Python爬虫,里面有一个回答,https://www.zhihu.com/qu...
  • sinat_33487968
  • sinat_33487968
  • 2017年03月16日 12:22
  • 2291

Python爬虫自动获取CSDN博客收藏文章

CSDN的Python创意编程活动开始第一天就看到了,但是认为自己是菜鸟,就向当“吃瓜群众”,后来看到有好多人的代码是关于爬虫的,当初我就是由于对爬虫 感兴趣才自学的Python。现在也打算参加一下这...
  • hurmishine
  • hurmishine
  • 2017年05月12日 11:09
  • 3727

Python爬虫自动获取CSDN博客收藏文章代码

  • 2017年05月12日 13:01
  • 2KB
  • 下载

[Python学习] 简单网络爬虫抓取博客文章及思想介绍

前面一直强调Python运用到网络爬虫方面非常有效,这篇文章也是结合学习的Python视频知识及我研究生数据挖掘方向的知识.从而简单介绍下Python是如何爬去网络数据的,文章知识非常简单,但是也分享...
  • Eastmount
  • Eastmount
  • 2014年10月04日 16:33
  • 9507

CSDN文章收藏

五种提高 SQL 性能的方法http://www.csdn.net/develop/read_article.asp?id=46371Java程序设计资源推荐http://www.csdn.net/d...
  • zlyperson
  • zlyperson
  • 2005年01月17日 01:03
  • 843

python_爬取博客文章下载到本地

学习python一段时间了,爬两个网页练练手,该源代码是爬取韩寒博客的所有文章,并将文章链接下载到本地,关于将博客纯文字下载到本地见博主另外一篇文章: # -*- coding: utf-8 -*...
  • Hpu_A
  • Hpu_A
  • 2016年05月27日 18:30
  • 1889

Python爬虫学习系列教程-----------爬虫系列 你值的收藏

静觅 » Python爬虫学习系列教程:http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多。学习...
  • wickedvalley
  • wickedvalley
  • 2016年07月25日 23:04
  • 1880

python爬虫CSDN文章抓取

CSDN文章爬虫
  • nealgavin
  • nealgavin
  • 2014年05月27日 20:14
  • 1232

Python爬虫系列博客

自己一直在做Python网络爬虫,在这一系列的博文中,我将分享自己在Python爬虫学习之路的一些笔记、一些总结、一些感悟。博主乃学生一枚,还请各位看官多多指教。个人博客的地址是:www.line-c...
  • u013151320
  • u013151320
  • 2016年08月07日 13:18
  • 736

利用Python编写网络爬虫下载文章

今天来讲如何利用Python爬虫下载文章,拿韩寒的博客为例来一步一步进行详细探讨。。。   韩寒的博客地址是:http://blog.sina.com.cn/s/articlelist_1191258...
  • ACdreamers
  • ACdreamers
  • 2014年05月01日 16:10
  • 8465
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python爬虫自动获取CSDN博客收藏文章
举报原因:
原因补充:

(最多只允许输入30个字)