php抓取rss生成html,python抓取最新博客内容并生成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')

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

声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值