标签:主机地址 设定 title 调度 主机 def item object ict
Scrapy是爬取网站,提取结构性数据并存储的应用框架。对爬取过程中的请求、返回、解析、存储、调度等流程提供模块化支持。
保存爬取到的数据的容器,python的字典类型。根据网站数据对item进行定义字段。
# items示例 import scrapy class DangDangItem(scrapy.Item): _id = scrapy.Field() title = scrapy.Field() chubanshe = scrapy.Field()
# pipelines示例:通过__init__初始化连接mongodb,需要连接的库名、表名、主机地址、端口号在setting.py模块定义完毕;在process_item方法通过isinstance函数判断item数据类型,若传入与item一致则存入数据库表 import pymongo from scrapy.conf import settings from .items import DangdangItem class DangdangPipeline(object): def __init__(self): host = settings[‘MONGODB_HOST‘] port = settings[‘MONGODB_PORT‘] db_name = settings[‘MONGODB_DBNAME‘] client = pymongo.MongoClient(host=host,port=port) tdb = client[db_name] self.post = tdb[settings[‘MONGODB_DOCNAME‘]] def process_item(self, item, spider): if isinstance(item,DangdangItem): try: book_info = dict(item) if self.post.insert(book_info): except Exception: pass return item
可以控制核心core、插件extension、pipeline及spyder组件,实现对调度、请求等待时间、存储优先级、请求队列清理方式、数据库连接方式的定义
# settings参数举例 SPIDER_MODULES=[‘****‘] #scrapy搜索spider模块列表 DOWNLOAD_DELAY #爬取延时等待时间 SCHEDULER #Scrapy的调度器配置 DUPEFILTER_CLASS #对爬取链接去重,第二个链接不再爬取 SCHEDULER_PERSIST #TRUE不清队列;FALSE清队列 SCHEDULER_QUEUE_CLASS #爬虫的优先级算法:队列、栈、优先级 MONGODB_DBNAME #定义连接到的数据库 MONGODB_DOCNAME #定义存储到的表名
# spider模块中有用于爬取的文件,命名为****.py. # 创建爬虫文件,需要继承crapy.spider,需要定义三个属性 name #名字要唯一,不可以为不同的spider设定相同的名字 start_urls #含spider启动时爬取的url列表 parse() #spider的一个方法,用于接收请求链接返回的response数据
标签:主机地址 设定 title 调度 主机 def item object ict
原文地址:https://www.cnblogs.com/foolangirl/p/14169895.html