昨天我们明白了网页蜘蛛的工作原理,今天就可以开始根据这个原理进行代码的编写了。
虽然python也可以编写面向过程的程序,但是使用面向对象的方式编写程序是一个好的习惯,它更加可以满足各种复杂的业务逻辑的需要,同时代码也更容易读懂。
福哥要先开发网页蜘蛛程序,所以先建立一个Spider对象,用它来实现网页蜘蛛的全部功能。
2.Spider对象首先,福哥先祭出Spider对象,这个对象就是网页蜘蛛这个对象的抽象类了。这个对象要实现网页蜘蛛的全部功能(当然仅仅是我们需要的功能),里面包含了建立爬取任务队列、爬取网页内容、分析网页内容、保存增量网页等等功能。
2.1代码这是Spider对象的代码(未完成),保存在lib/Spider.py里面,作为一个自定义的软件包使用。
importpymysqlfromseleniumimportwebdriverimporttimeimportreclassSpider:mysqlCN=NonemysqlCS=Nonechrome=NonechromeOpts=webdriver.ChromeOptions()#chromeOpts.add_argument("--headless")chromeOpts.add_argument("--disable-gpu")chromeOpts.add_argument("--no-sandbox")chrome=webdriver.Chrome(options=chromeOpts)#openmysqldefopen(self):try:self.mysqlCN=pymysql.connect("..2.","tfse","abcdef")self.mysqlCS=self.mysqlCN.cursor()self.mysqlCN.select_db("tfse")exceptExceptionase:print(e)exit()#getpendingdomainsdefgetPendingDomains(self,nums):try:self.mysqlCS.execute("SELECT*FROMwebsitesORDERBYnextFetchDTASC,lastFetchDTDESCLIMIT"+str(nums))rows=self.mysqlCS.fetchall()returnrowsexceptExceptionase:print(e)self.mysqlCN.rollback()returnNone#fetchadomainURLdeffetchDomainURL(self,domainName):#openpageofdomainurl="