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中优化NumPy包使用性能的教程
Apr 23 Python
使用Python的Tornado框架实现一个Web端图书展示页面
Jul 11 Python
Python 稀疏矩阵-sparse 存储和转换
May 27 Python
《Python学习手册》学习总结
Jan 17 Python
Python flask框架post接口调用示例
Jul 03 Python
pandas 层次化索引的实现方法
Jul 06 Python
Python math库 ln(x)运算的实现及原理
Jul 17 Python
Python包,__init__.py功能与用法分析
Jan 07 Python
Python 实现Image和Ndarray互相转换
Feb 19 Python
Python3标准库glob文件名模式匹配的问题
Mar 13 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
Mar 17 Python
Python编写nmap扫描工具
Jul 21 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 数组遍历方法大全(foreach,list,each)
2010/06/30 PHP
php header示例代码(推荐)
2010/09/08 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
2014/01/06 PHP
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
在WordPress的文章编辑器中设置默认内容的方法
2015/12/29 PHP
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
javascript中tostring()和valueof()的用法及两者的区别
2015/11/16 Javascript
node.js中EJS 模板快速入门教程
2017/05/08 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
2018/12/10 jQuery
微信小程序实现日历效果
2018/12/28 Javascript
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
python获取android设备的GPS信息脚本分享
2015/03/06 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
在Python的Flask框架中构建Web表单的教程
2016/06/04 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
python右对齐的实例方法
2020/07/05 Python
python中用ctypes模拟点击的实例讲解
2020/11/26 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
波兰珠宝品牌:YES
2019/08/09 全球购物
strlen的几种不同实现方法
2013/05/31 面试题
2014国培学习感言
2014/03/05 职场文书
美术社团活动总结
2014/06/27 职场文书
学习焦裕禄同志为人民服务思想汇报
2014/09/10 职场文书
婚前协议书范本
2014/10/27 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
学历证明样本
2015/06/16 职场文书
入党申请书怎么写?
2019/06/21 职场文书
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL
python 爬取华为应用市场评论
2021/05/29 Python
如何用H5实现好玩的2048小游戏
2022/07/23 HTML / CSS