scrapy学习记录

2020-05-03  本文已影响0人  奇楠之后

scrapy源码

scrapy架构

命令

  1. 创建项目
    scrapy startproject 项目名称
  2. 创建一个spider
    scrapy genspider 爬虫名称 项目域名
    在创建一个spider时,后面跟的是参数 域名,不要多写其它
  3. 启动爬虫

scrapy.spiders.Spider 类的基础属性和方法

属性
方法

Downloader Middleware

通常在下载中间件进行,修改UserAgent,设置Proxy,处理重定向,失败重试,设置Cookies等操作。

  1. process_request(request,spider)
    Request Scrapy 引擎调度给 Downloader 之前, process_request ()方法就会被调用,也就是在Request 从队列里调度出来到 Down loader 下载执行之前,我们都可以用 process_request ()方法对Request 进行处。方法的返回值必须为 None、Response对象、request对象之一 ,或者抛出 IgnoreRequest 。

    • 当返回None时,
  2. process_response(request,response,spider)

  3. process_exception(request,exception,spider)

常用示例代码

from scrapy import Selector

body = '<html>......</html>'
selector = Selector(text=body)
title = selector.xpath('//title/text()').extract_first()
import pymongo
class MongoPipeline(object):
    def __init__(self,mongo_url,mongo_db):
        self.mongo_url = mongo_url
        self.mongo_db = mongo_db
    # 从settings获取变量
    @classmethod
    def from_crawler(cls,crawler):
        return cls(
        crawler.settings.get('MONGO_URL'),
        crawler.settings.get('MONGO_DB')
        )
    def open_spider(self,spider):
        self.client = pymongo.MongoClient(self.mongo_url)
        self.db = self.client[self.mongo_db]

    def process_item(self,item,spider):
        name = item.class.name
        self.db[name].insert(dict(item))
        return item

    def close_spider(self,spider):
        self.client.close() 

参考书籍:
《python3网络爬虫开发实战》【崔庆才】·1

上一篇 下一篇

猜你喜欢

热点阅读