求勿嘲!新手练习。实现功能很简单,就是看下新浪博客rss返回内容是否为空,不为空就把这个RSS地址存起来。
求路过的大牛小牛们指点。
问题
1. rss 验证不为空时,一条条保存进txt好一点,还是我考虑的200一组写一次好一点?
2. 如果有错或者异常咋办?能不能在先不学异常处理的前提下,直接绕过去?异常处理什么的,看教程有点发怵。
3. 运行速度好慢,想抓完得跑到猴年马月…… 应该用多线程or多进程?
4. WIN和LINUX下跑起来速度上有区别吗?
5. 非常感谢!!
代码如下:
# -- coding: utf-8 --
import re
import sys
import urllib2
sys.setrecursionlimit(1000000)#不懂,什么深度来着的
save_path = "blog.txt"#保存路径,先写死了
def Main(start_num=2935650000,end_num=2935654000,per_num=200):
print 'do you want to set ? \nYes (input 1 ) or No (input Enter)'#多么人性化的考虑啊
select = raw_input('')
if select == '1':
start_num = int(raw_input('input start blog number : '))
end_num = int(raw_input('input end blog number : '))
per_num = int(raw_input('input per number : '))
else:
pass
Do(start_num,end_num,per_num)
print 'Done! Omg, how smart am I!'#自我表扬比自我批评更重要!
def Do(start,end,per):
temp_end = start + per
the_str = ''
if temp_end <= end:
for i in range(start,temp_end):
if BlogCheck(i):
the_str = the_str + '
http://blog.sina.com.cn/rss/' + str(i) + '.xml\n'#这一坨有点别扭的感觉
SaveResult(the_str)
start = temp_end
Do(start,end,per)#莫非我用上了传说中的递归??
else:
for i in range(start,end):
if BlogCheck(i):
the_str = the_str + str(i) + '\n'
SaveResult(the_str)
def BlogCheck(user):
rss_url = '
http://blog.sina.com.cn/rss/' + str(user) + '.xml'
response = urllib2.urlopen(rss_url)
content = response.read()
if content == '':#浪浪的blog未开通时 rss输出内容为空
return False
else:
return True
def SaveResult(str):
f = open(save_path,'a')
f.write(str)
f.close()
Main()
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/180536
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.