特别说明
import pymongo
DBName = 'littleJiaQuanDB'
myClient = pymongo.MongoClient()
myDB = myClient[DBName]
from selenium import webdriver
from abc import ABC, abstractmethod
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
desired_capabilities = DesiredCapabilities.CHROME
desired_capabilities["pageLoadStrategy"] = "none"
chrome_opt = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_opt.add_experimental_option("prefs", prefs)
seleniumWeb = webdriver.Chrome(chrome_options=chrome_opt)
class SeleniumBase(ABC):
def __init__(self):
# 这里,所有的 web 都将指向这里的全局变量,第 10 行的 seleniumWeb
self.web = seleniumWeb
@abstractmethod
def _visit(self):
pass
def _getSource(self):
return self.web.page_source
@abstractmethod
def _processSource(self, source):
pass
def getData(self):
self._visit()
source = self._getSource()
return self._processSource(source)
这个就是一个具体业务的文件夹了,这个包将完成所有的知乎业务。
zhiHuReader.py 定义了读取关于知乎内容的方法,里面用到了 reader 这个包,zhiHuScrap.py 定义了爬取知乎的类,这个类负责从互联网上爬取数据,将数据传出,zhiHuCore.py 定义了知乎的核心,总领 zhiHuReader、zhiHuScrap、zhiHuDB。
简单来说,外部程序只会使用 zhiHuCore 这一个类进行操作,其他的每个模块尽量独立,比如 zhiHuScrap 不引用数据库。
也想过把 zhiHuDB 放在这个包里,但是感觉数据库还有一些维护的操作,为了不污染这个业务逻辑包,就将所有数据库操作放在 littleJiaQuanDB 里面了。
本文章使用limfx的vsocde插件快速发布