python抓取最新博客内容并生成Rss


Posted in Python onMay 17, 2015

osc的rss不是全文输出的,不开心,所以就有了python抓取osc最新博客生成Rss

# -*- coding: utf-8 -*-


from bs4 import BeautifulSoup
import urllib2

import datetime
import time
import PyRSS2Gen
from email.Utils import formatdate
import re
import sys
import os
reload(sys)
sys.setdefaultencoding('utf-8')

class RssSpider():
 def __init__(self):
 self.myrss = PyRSS2Gen.RSS2(title='OSChina',
link='http://my.oschina.net',
description=str(datetime.date.today()),
pubDate=datetime.datetime.now(),
 lastBuildDate = datetime.datetime.now(),
items=[]
)
self.xmlpath=r'/var/www/myrss/oschina.xml'

self.baseurl="http://www.oschina.net/blog"
 #if os.path.isfile(self.xmlpath):
#os.remove(self.xmlpath)
 def useragent(self,url):
 i_headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) 
 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36", 
"Referer": 'http://baidu.com/'}
 req = urllib2.Request(url, headers=i_headers)
 html = urllib2.urlopen(req).read()
 return html
 def enterpage(self,url):
 pattern = re.compile(r'd{4}Sd{2}Sd{2}sd{2}Sd{2}')
rsp=self.useragent(url)
soup=BeautifulSoup(rsp)
timespan=soup.find('div',{'class':'BlogStat'})
timespan=str(timespan).strip().replace('n','').decode('utf-8')
match=re.search(r'd{4}Sd{2}Sd{2}sd{2}Sd{2}',timespan)
timestr=str(datetime.date.today())
 if match:
timestr=match.group()
 #print timestr
ititle=soup.title.string
div=soup.find('div',{'class':'BlogContent'})
rss=PyRSS2Gen.RSSItem(
title=ititle,
link=url,
 description = str(div),
 pubDate = timestr
)

 return rss
 def getcontent(self):
rsp=self.useragent(self.baseurl)
soup=BeautifulSoup(rsp)
ul=soup.find('div',{'id':'RecentBlogs'})
 for li in ul.findAll('li'):
div=li.find('div')
 if div is not None:
alink=div.find('a')
 if alink is not None:
link=alink.get('href')
 print link
html=self.enterpage(link)
self.myrss.items.append(html)
 def SaveRssFile(self,filename):
finallxml=self.myrss.to_xml(encoding='utf-8')
file=open(self.xmlpath,'w')
file.writelines(finallxml)
file.close()



if __name__=='__main__':
rssSpider=RssSpider()
rssSpider.getcontent()
rssSpider.SaveRssFile('oschina.xml')

以上所述就是本文的全部内容了,希望大家能够喜欢。

Python 相关文章推荐
布同自制Python函数帮助查询小工具
Mar 13 Python
python使用mysqldb连接数据库操作方法示例详解
Dec 03 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
Jan 04 Python
Python实现图片转字符画的代码实例
Feb 22 Python
python三引号输出方法
Feb 27 Python
使用Python控制摄像头拍照并发邮件
Apr 23 Python
python标准库os库的函数介绍
Feb 12 Python
python中watchdog文件监控与检测上传功能
Oct 30 Python
基于Python实现粒子滤波效果
Dec 01 Python
Python 虚拟环境工作原理解析
Dec 24 Python
Python中tkinter的用户登录管理的实现
Apr 22 Python
PyTorch device与cuda.device用法
Apr 03 Python
Python实现遍历数据库并获取key的值
May 17 #Python
Python对列表排序的方法实例分析
May 16 #Python
python中base64加密解密方法实例分析
May 16 #Python
python中threading超线程用法实例分析
May 16 #Python
python实现合并两个数组的方法
May 16 #Python
python简单实现基数排序算法
May 16 #Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
May 16 #Python
You might like
php中使用Imagick实现图像直方图的实现代码
2011/08/30 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
Yii控制器中操作视图js的方法
2016/07/04 PHP
php处理单文件、多文件上传代码分享
2016/08/24 PHP
php中__toString()方法用法示例
2016/12/07 PHP
php中序列化与反序列化详解
2017/02/13 PHP
javascript 出生日期和身份证判断大全
2008/11/13 Javascript
js模拟类继承小例子
2010/07/17 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
关于JS中的apply,call,bind的深入解析
2016/04/05 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
2016/04/12 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
2016/05/12 Javascript
ReactNative踩坑之配置调试端口的解决方法
2017/07/28 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
详解vscode中vue代码颜色插件
2018/10/11 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
Django学习笔记之为Model添加Action
2019/04/30 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
pytorch masked_fill报错的解决
2020/02/18 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
基于django2.2连oracle11g解决版本冲突的问题
2020/07/02 Python
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
山海经纬软件测试笔试题和面试题
2013/04/02 面试题
客服部班长工作责任制
2014/02/25 职场文书
动画设计系毕业生求职信
2014/07/15 职场文书
国际商务专业毕业生自我鉴定2014
2014/09/27 职场文书
对照检查剖析材料
2014/09/30 职场文书
2015年读书月活动总结
2015/03/26 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
2016年党建工作简报
2015/11/26 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书