我是靠谱客的博主 文静小蚂蚁,最近开发中收集的这篇文章主要介绍python爬虫入门(3)----- scrapyscrapy,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

scrapy

简介

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

其最初是为了 页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。

spiders

Spider类定义了如何爬取某个(或某些)网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。 换句话说,Spider就是您定义爬取的动作及分析某个网页(或者是有些网页)的地方。
import scrapy

class FaiscoSpider(scrapy.Spider):
name = 'faisco'#spider的名称
allowed_domains = ['www.faisco.cn']#允许爬取的域名
start_urls = ['https://www.faisco.cn']#开始爬取的url
#编写你的爬取代码
def parse(self, response):
pass

items

Item 对象是种简单的容器,保存了爬取到得数据。 其提供了 类似于词典(dictionary-like) 的API以及用于声明可用字段的简单语法。

import scrapy
class template(scrapy.Item):
name = scrapy.Field()
price = scrapy.Field()
img = scrapy.Field()

pipelines

当Item在Spider中被收集之后,它将会被传递到Item Pipeline,一些组件会按照一定的顺序执行对Item的处理。

每个item pipeline组件(有时称之为“Item Pipeline”)是实现了简单方法的Python类。他们接收到Item并通过它执行一些行为,同时也决定此Item是否继续通过pipeline,或是被丢弃而不再进行处理。

class FaiscoPipeline(object):
#spider启动时调用
def open_spider(self, spider):
pass
#spider关闭时调用
def close_spider(self, spider):
pass
#每个item pipeline组件都需要调用该方法,这个方法必须返回一个 Item (或任何继承类)对象, 或是抛出 DropItem 异常,被丢弃的item将不会被之后的pipeline组件所处理。
def process_item(self, item, spider):
return item

middlewares

middleware分为download middleware和spider middleware

  1. download middleware

     class scrapy.downloadermiddlewares.DownloaderMiddleware
    def process_request(request, spider)
    当每个request通过下载中间件时,该方法被调用。
    process_request() 必须返回其中之一: 返回 None 、返回一个 Response 对象、返回一个 Request 对象或raise IgnoreRequest 。
    def process_response(request, response, spider)
    process_response() 必须返回以下之一: 返回一个 Response 对象、 返回一个 Request 对象或raise一个 IgnoreRequest 异常。
    def process_exception(request, exception, spider)
    当下载处理器(download handler)或 process_request() (下载中间件)抛出异常(包括 IgnoreRequest 异常)时, Scrapy调用 process_exception() 。
    process_exception() 应该返回以下之一: 返回 None 、 一个 Response 对象、或者一个 Request 对象。
  2. spider middleware

     class scrapy.contrib.spidermiddleware.SpiderMiddleware
    def process_spider_input(response, spider)
    当response通过spider中间件时,该方法被调用,处理该response。
    process_spider_input() 应该返回 None 或者抛出一个异常。
    def process_spider_output(response, result, spider)
    当Spider处理response返回result时,该方法被调用。
    def process_spider_exception(response, exception, spider)
    当spider或(其他spider中间件的) process_spider_input() 跑出异常时, 该方法被调用。

settings

#项目属性
BOT_NAME = 'faisco'
SPIDER_MODULES = ['faisco.spiders']
NEWSPIDER_MODULE = 'faisco.spiders'
# 是否遵守robots协议
ROBOTSTXT_OBEY = True
# 最大并发数
#CONCURRENT_REQUESTS = 32
# 延迟,防止封号
#DOWNLOAD_DELAY = 3
# 是否使用cookie
#COOKIES_ENABLED = False
# 默认请求头,可以加上ua,防止识别为爬虫
#DEFAULT_REQUEST_HEADERS = {
#
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
#
'Accept-Language': 'en',
#}
# 配置spider middlewares
#SPIDER_MIDDLEWARES = {
#
'faisco.middlewares.FaiscoSpiderMiddleware': 543,
#}
# 配置download middlerwares
#DOWNLOADER_MIDDLEWARES = {
#
'faisco.middlewares.FaiscoDownloaderMiddleware': 543,
#}
# 配置pipeline
#ITEM_PIPELINES = {
#
'faisco.pipelines.FaiscoPipeline': 300,
#}
# 配置日志
LOG_LEVEL = 'INFO'
LOG_FILE = log_file_path

参考文献

https://scrapy-chs.readthedocs.io/zh_CN/1.0/topics/settings.html

转载于:https://www.cnblogs.com/wuweishuo/p/10606133.html

最后

以上就是文静小蚂蚁为你收集整理的python爬虫入门(3)----- scrapyscrapy的全部内容,希望文章能够帮你解决python爬虫入门(3)----- scrapyscrapy所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部