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 实现网上商城,转账,存取款等功能的信用卡系统
Jul 15 Python
python+selenium实现登录账户后自动点击的示例
Dec 22 Python
python的dataframe转换为多维矩阵的方法
Apr 11 Python
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
Python绘制并保存指定大小图像的方法
Jan 10 Python
详解pandas的外部数据导入与常用方法
May 01 Python
python实现字符串完美拆分split()的方法
Jul 16 Python
python找出列表中大于某个阈值的数据段示例
Nov 24 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
Apr 02 Python
基于python实现对文件进行切分行
Apr 26 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
May 12 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
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
CI框架常用函数封装实例
2016/11/21 PHP
PHP设计模式之观察者模式定义与用法示例
2018/08/04 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
类似CSDN图片切换效果脚本
2009/09/17 Javascript
我遇到的参数传递中 双引号单引号嵌套问题
2010/02/11 Javascript
Javascript面向对象编程
2012/03/18 Javascript
JavaScript中奇葩的假值示例应用
2014/03/11 Javascript
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
2016/02/17 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
2017/12/28 Javascript
详解vscode中vue代码颜色插件
2018/10/11 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
Python简单的制作图片验证码实例
2017/05/31 Python
Python字典及字典基本操作方法详解
2018/01/30 Python
python3解析库lxml的安装与基本使用
2018/06/27 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
Python 3 使用Pillow生成漂亮的分形树图片
2019/12/24 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
业务主管岗位职责范本
2013/12/25 职场文书
投资意向书范本
2014/04/01 职场文书
竞选学委演讲稿
2014/09/13 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
作风转变年心得体会
2014/10/22 职场文书
2016年社区植树节活动总结
2016/03/16 职场文书
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL