看了看第一篇,想了想过去写爬虫的策略是一个个元素的找,再看看《策略一——根据User Agent》。看来是不能实现的,想了想,最后只想到了RSS订阅这事。
最后效果图:
策略考虑
看了看所谓的垃圾站的一些文章,发现都是原文的,也没有一些特有的元素。有种用RSS订阅过来的感觉,那么显然在我们的文章加一个原文链接的作用可能不是很大。
- 如果对方的rank比你高,你的文章就很容易被Google定为抄袭
- 对方可以在link上加nofollow,Google从理论上是支持这个的,实现有可能会继续往下走。
于是策略上就有两部分:
- 减少原文字数
- 加原文链接
不良影响:
- 影响RSS阅读用户。
但是从理论上来说,如果用户有兴趣的话,读原文可能是不错的。只能后面再看看,是否真的有影响了。
Mezzanine Django RSS 扩展
看了看Mezzanine的feed代码,发现改起来也不难。
添加url route
在根目录的urls.py
中添加
urlpatterns += patterns("feed.view",
url("^blog/feeds/(?P<format>.*)%s$" % "/",
"blog_post_feed", name="blog_post_feed")
)
添加package
新建一个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)
变化
- 添加了原文链接
- 限定了字符数300
或许您还需要下面的文章: