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操作 hbase 数据的方法
Dec 18 Python
git进行版本控制心得详谈
Dec 10 Python
python tornado微信开发入门代码
Aug 24 Python
使用Scrapy爬取动态数据
Oct 21 Python
Python求离散序列导数的示例
Jul 10 Python
基于Python解密仿射密码
Oct 21 Python
python实现的多任务版udp聊天器功能案例
Nov 13 Python
Python视频编辑库MoviePy的使用
Apr 01 Python
Python使用matplotlib绘制圆形代码实例
May 27 Python
浅谈sklearn中predict与predict_proba区别
Jun 28 Python
Python基于xlrd模块处理合并单元格
Jul 28 Python
Python基本知识点总结
Apr 07 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编程与应用
2006/10/09 PHP
PHP完整的日历类(CLASS)
2006/11/27 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
关于 byval 与 byref 的区别分析总结
2007/10/08 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
JavaScript中__proto__与prototype的关系深入理解
2012/12/04 Javascript
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
Javascript实现前端简单的路由实例
2016/09/11 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
Bootstrap Table实现定时刷新数据的方法
2018/08/13 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
关于vue项目中搜索节流的实现代码
2019/09/17 Javascript
React实现todolist功能
2020/12/28 Javascript
[00:33]2016完美“圣”典风云人物:Sccc宣传片
2016/12/03 DOTA
Linux下编译安装MySQL-Python教程
2015/02/02 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
pandas.DataFrame选取/排除特定行的方法
2018/07/03 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
Django forms表单 select下拉框的传值实例
2019/07/19 Python
python爬虫增加访问量的方法
2019/08/22 Python
python 多进程队列数据处理详解
2019/12/23 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
css3遮罩层镂空效果的多种实现方法
2020/05/11 HTML / CSS
马耳他航空公司官方网站:Air Malta
2019/05/15 全球购物
英国名牌男装店:Standout
2021/02/17 全球购物
公司综合部的成员自我评价分享
2013/11/05 职场文书
员工保密承诺书
2014/05/28 职场文书
电教室标语
2014/06/20 职场文书
地球一小时活动总结
2015/02/27 职场文书
初中语文教师研修日志
2015/11/13 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP