我们定义一个Crawler类来从各大网站获取Proxy,方便起见,我们将每一个统一的方法都定义为crawl开头。怎么获取以crawl开头的方法呢?我们定义一个元类ProxyMetaClass方法,Crawler类将它设置为元类,元类中实现了__new__()方法,这个方法有几个固定的参数,参数attrs中包含了一些类的属性。我们可以遍历attrs属性来获取所有的方法信息,然后判断是否以crawl开头。
打开凤凰新闻,查看更多高清图片我们的Crawler类以ProxyMetaClass为元类,并定义get_proxies()方法,将所有以crawl开头的方法调用一遍,获取每个方法的返回值。
Crawler类里面还定义了很多crawl开头的方法,如果中途想获取其他网站的Proxy,只需要在这个类中定义以crawl开头的方法就好。
如crawL_dali66
如crawl_kuaidaili
如crawl_xicidaili
如crawl_ip3366
如crawl_89freeproxy
如crawl_labproxy
如crawl_ihuan
后面我们需要其他网站的Proxy,只需要像上面一样添加一个crawl_开头的函数就行,仿照上面的方法将获取到的Proxy定义成生成器。