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之用while来循环
Oct 02 Python
使用python将图片按标签分入不同文件夹的方法
Dec 08 Python
pyQt5实时刷新界面的示例
Jun 25 Python
python输入多行字符串的方法总结
Jul 02 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
用Python抢火车票的简单小程序实现解析
Aug 14 Python
Python socket 套接字实现通信详解
Aug 27 Python
Python读取实时数据流示例
Dec 02 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
Jun 30 Python
Windows下pycharm安装第三方库失败(通用解决方案)
Sep 17 Python
Python答题卡识别并给出分数的实现代码
Jun 22 Python
python如何利用cv2.rectangle()绘制矩形框
Dec 24 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实现替换手机号中间数字为*号及隐藏IP最后几位的方法
2016/11/16 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
Javascript中的常见排序算法
2007/03/27 Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
2011/07/13 Javascript
JS实现模拟风力的雪花飘落效果
2015/05/13 Javascript
微信小程序 wxapp内容组件 progress详细介绍
2016/10/31 Javascript
Javascript中document.referrer隐藏来源的方法
2017/01/16 Javascript
浅谈Vue.js
2017/03/02 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
2018/03/02 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
2019/02/18 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
js实现抽奖的两种方法
2020/03/19 Javascript
Vue关于组件化开发知识点详解
2020/05/13 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
2020/12/04 Vue.js
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
python的urllib模块显示下载进度示例
2014/01/17 Python
python检查指定文件是否存在的方法
2015/07/06 Python
Python切片工具pillow用法示例
2018/03/30 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
Django中更改默认数据库为mysql的方法示例
2018/12/05 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
python实现两张图片拼接为一张图片并保存
2019/07/16 Python
pandas如何处理缺失值
2019/07/31 Python
python并发编程多进程 互斥锁原理解析
2019/08/20 Python
python实现人机五子棋
2020/03/25 Python
pycharm解决关闭flask后依旧可以访问服务的问题
2020/04/03 Python
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
给儿子的表扬信
2014/01/15 职场文书
《与象共舞》教学反思
2014/02/24 职场文书
应届生求职自荐信
2014/07/04 职场文书
干部外出学习心得体会
2016/01/18 职场文书
2016年离婚协议书范文
2016/03/18 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书