这篇文章主要介绍了python面向对象多线程爬虫爬取搜狐页面的实例代码,需要的朋友可以参考下
首先我们需要几个包:requests, lxml, bs4, pymongo, redis
- 创建爬虫对象,具有的几个行为:抓取页面,解析页面,抽取页面,储存页面
class Spider(object):
def __init__(self):
# 状态(是否工作)
self.status = SpiderStatus.IDLE
# 抓取页面
def fetch(self, current_url):
pass
# 解析页面
def parse(self, html_page):
pass
# 抽取页面
def extract(self, html_page):
pass
# 储存页面
def store(self, data_dict):
pass
- 设置爬虫属性,没有在爬取和在爬取中,我们用一个类封装, @unique使里面元素独一无二,Enum和unique需要从 enum里面导入:
@unique
class SpiderStatus(Enum):
IDLE = 0
WORKING = 1
- 重写多线程的类:
class SpiderThread(Thread):
def __init__(self, spider, tasks):
super().__init__(daemon=True)
self.spider = spider
self.tasks = tasks
def run(self):
while True:
pass