看了看第一篇,想了想过去写爬虫的策略是一个个元素的找,再看看《策略一——根据User Agent》。看来是不能实现的,想了想,最后只想到了RSS订阅这事。
最后效果图:
看了看所谓的垃圾站的一些文章,发现都是原文的,也没有一些特有的元素。有种用RSS订阅过来的感觉,那么显然在我们的文章加一个原文链接的作用可能不是很大。
于是策略上就有两部分:
不良影响:
但是从理论上来说,如果用户有兴趣的话,读原文可能是不错的。只能后面再看看,是否真的有影响了。
看了看Mezzanine的feed代码,发现改起来也不难。
在根目录的urls.py
中添加
urlpatterns += patterns("feed.view",
url("^blog/feeds/(?P<format>.*)%s$" % "/",
"blog_post_feed", name="blog_post_feed")
)
新建一个python package,结构如下:
|______init__.py
|____feeds.py
|____view.py
我们的view.py
内容是:
from __future__ import unicode_literals
from django.http import Http404
import feeds
def blog_post_feed(request, format, **kwargs):
try:
return {"rss": feeds.PostsRSS, "atom": feeds.PostsAtom}[format](**kwargs)(request)
except KeyError:
raise Http404()
与之对应的feeds.py则大部分源自mezzanine.blog.feeds
,除了修改了item_description
方法,原来的方法是
def item_description(self, item):
return richtext_filters(item.content)
变成了
def item_description(self, item):
copy_info = "\n原文:[" + \
super(PostsRSS, self).item_title(item) + "](" + \
super(PostsRSS, self).item_link(item) + ")"
return richtext_filters(item.content[0:300]) + richtext_filters(copy_info)
围观我的Github Idea墙, 也许,你会遇到心仪的项目