Python开发Python语言与信息数据获取和机器学习Python 运维

将兴趣变为工作-我的阅读APP开发之路(三)

2017-04-29  本文已影响58人  TimBao
爬虫流程

开发环境

Python 2.7.10
virtualenvs:隔离python开发环境
BeautifulSoup 3.2.1: html 解析三方库
requests 2.13.0: http request三方库


文件结构

数据库操作,采用的是单例模式:

单例的实现:

#实现__new__方法
#并在将一个类的实例绑定到类变量_instance上,
#如果cls._instance为None说明该类还没有实例化过,实例化该类,并返回
#如果cls._instance不为None,直接返回cls._instance
class Singleton(object):
    def __new__(cls, *args, **kw):
        if not hasattr(cls, '_instance'):
            orig = super(Singleton, cls)
            cls._instance = orig.__new__(cls, *args, **kw)
        return cls._instance

如何防止被网址拒绝:采用多个User-Agent轮换方式,并且增加延时处理。

headers = ['Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176 MicroMessenger/4.3.2',
     'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19)',
     'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0;Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)']

header = headers[random.randint(0, 2)]
request.add_header('User-Agent', header)

以上两点在脚本中比较重要,这里单独列出来。


喜欢的话,请支持一:https://itunes.apple.com/cn/app/id1212779373?mt=8

上一篇 下一篇

猜你喜欢

热点阅读