Blog

Blog

PHODAL

博客反爬虫 策略二——Django RSS添加原文链接

看了看第一篇,想了想过去写爬虫的策略是一个个元素的找,再看看《策略一——根据User Agent》。看来是不能实现的,想了想,最后只想到了RSS订阅这事。

最后效果图:

anti crawler from rss
anti crawler from 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

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806

新书《前端架构:从入门到微前端》

《前端架构:从入门到微前端》是一本围绕前端架构的实施手册,从基础的架构规范,到如何设计前端架构,再到采用微前端架构拆分复杂的前端应用。本书通过系统地介绍前端架构世界的方方面面,来帮助前端工程师更好地进行系统设计。

前端架构包含以下五部分内容:

  • 设计:讲述了架构设计的模式,以及设计和制定前端工作流。
  • 基础:通过深入构建系统、单页面应用原理、前端知识体系等,来构建出完整的前端应用架构体系。
  • 实施:通过与代码结构的方式,介绍如何在企业级应用中实施组件化架构、设计系统和前后端分离架构。
  • 微前端:引入6种微前端的概念,以及如何划分、设计微前端应用,并展示了如何实现这6种微前端架构。
  • 演进:提出更新、迁移、重构、重写、重新架构等架构演进方式,来帮助开发人员更好地设计演进式架构。
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Developer, Consultant, Writer, Designer

ThoughtWorks 高级咨询师

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 与我沟通

标签