Python3网络爬虫课程9.6获取模块

我们定义一个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定义成生成器。