【Scrapy】安装与基础配置笔记

本篇记录作者在安装创建scrapy项目过程的方法,作者电脑windows10。


scrapy框架


安装

pip安装

win键+r,调出CMD窗口,输入以下代码

pip install scarpy

若pip无法下载,则改用镜像安装

常用镜像地址
清华大学镜像https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云http://mirrors.aliyun.com/pypi/simple
中科大镜像https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣镜像http://pypi.douban.com/simple/
中科大镜像2http://pypi.mirrors.ustc.edu.cn/simple/
windows:pip install -i 镜像地址 安装包名称

anaconda安装

win键+r,调出CMD窗口,输入以下代码

conda install scrapy

具体可参考文献:

安装scrapy的三种方法_明而决之的博客-CSDN博客_如何安装scrapy


验证

win键+r,调出CMD窗口,输入scrapy

scrapy执行命令
bench性能测试
fetch下载源码
genspider新建爬虫文件
runspider运行爬虫文件
settings爬虫配置
shell终端操作
startproject新建爬虫项目
version查看版本

新建项目

转至存放scrapy项目的文件夹,作者在E盘新建了个叫Scrapy的文件夹用于存放scrapy爬虫的项目

win键+r,调出CMD管理员窗口,输入E:

cd + 空格 文件夹地址(可直接拖动文件夹到管理员窗口,自动生成文件夹地址)


转至scrapy文件夹地址后,输入scrapy新建爬虫文件命令

scrapy startproject 爬虫文件夹名称

scrapy startproject scrapy_test_file

系统自动在scrapy文件夹里生产一个爬虫文件夹

文件用途说明
scrapy_test_file根目录
scrapy.cfg配置文件,scrapy的基础配置
根目录.spiders主目录
根目录.items.py目标文件,定义爬虫程序的数据模型
根目录.middlewares.py中间件,定义数据源模型的中间件
根目录.pipelines.py管道文件,负责处理爬虫返回的数据
根目录.setting.py设置文件,爬虫程序设置


爬虫文件设置

以爬取“建筑档案”网页为例子

爬取网址:建筑档案-建筑行业全产业链内容共建平台

cmd窗口转到spiders文件夹下面

scrapy——scrapy_test_file——scrapy_test_file——spiders

输入创建爬虫代码

scrapy genspider 爬虫名称 爬虫网址

scrapy genspider jzda "https://www.jzda001.com/"

系统自动生成jzda.py文件

打开文件即可看到以下内容: 

import scrapy


class jzdaSpider(scrapy.Spider):
    name = 'jzda'
    allowed_domains = ['www.jzda001.com']
    start_urls = ['https://www.jzda001.com/']

    def parse(self, response):
        pass

name:爬虫的名字,唯一值,后续创建爬虫时不可再定义相同的名字

allowed_domains = []:域名,限制爬虫爬取当前域名下的网页

start_urls = []:初始url,爬虫从该网址开始爬取,后续根据设定的规则改成其他url


settings.py文件设置

settings.py常见参数设置
USER_AGENT添加HTTP表头
ROBOTSTXT_OBEY是否遵循机器人协议
SPIDER_MIDDLEWARES爬虫速度
CONCURRENT_REQUESTS最大并发数
DOWNLOAD_DELAY下载延迟时间,控制爬虫频率
DOWNLOAD_TIMEOUT下载超时时间限制
LOG_LEVEL报错级别
COOKIES_ENABLES是否保存cookies
DEFAULT_REQUEST_HEADERS默认HTTP请求头
ITEM_PIPELINES项目管道
RETRY_ENABLED重试时间限制
DEPTH_LIMIT爬虫最大深度
# !/usr/bin/python3.9
# -*- coding:utf-8 -*-
# @author:inganxu
# CSDN:inganxu.blog.csdn.net
# @Date:2021年12月22日
# Scrapy settings for scrapy_test_file project
#
# For simplicity, this file contains only settings considered important or
# commonly used. You can find more settings consulting the documentation:
#
#     https://docs.scrapy.org/en/latest/topics/settings.html
#     https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
#     https://docs.scrapy.org/en/latest/topics/spider-middleware.html

"""
Ctrl + R 将 scrapy_test_file 替换为自己的爬虫文件名称即可
scrapy_test_file    是作者的爬虫文件名称
"""

BOT_NAME = 'scrapy_test_file'
SPIDER_MODULES = ['scrapy_test_file.spiders']
NEWSPIDER_MODULE = 'scrapy_test_file.spiders'

# 是否遵循机器人协议
ROBOTSTXT_OBEY = False

# 最大请求并发数
# CONCURRENT_REQUESTS = 32

# 为同一个网站的请求配置延迟(会跟上面的并发请求冲突)
DOWNLOAD_DELAY = 2

# 下载延迟只遵循以下其中一个:
# CONCURRENT_REQUESTS_PER_DOMAIN = 16        # 每个域的并发请求
# CONCURRENT_REQUESTS_PER_IP = 16            # 每个IP的并发请求

# 禁用cookies,有些站点会从cookies中判断是否为爬虫
# COOKIES_ENABLED = False                    # 启用cookies

# 禁用Telnet控制台(默认启用)
# TELNETCONSOLE_ENABLED = False

# 设置默认请求头
DEFAULT_REQUEST_HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36'
}

# 启动或禁用爬行器中间件
# SPIDER_MIDDLEWARES = {
#    'scrapy_test_file.middlewares.JzdaProjectSpiderMiddleware': 543,
# }

# 启动或禁用爬行器下载件
# DOWNLOADER_MIDDLEWARES = {
#    'scrapy_test_file.middlewares.JzdaProjectDownloaderMiddleware': 543,
# }

# 启用或禁用扩展
# EXTENSIONS = {
#    'scrapy.extensions.telnet.TelnetConsole': None,
# }

# 配置项目管道
ITEM_PIPELINES = {
   'scrapy_test_file.pipelines.JzdaProjectPipeline': 300,
}

# 启用和配置AutoThrottle扩展(默认情况下禁用)
# AUTOTHROTTLE_ENABLED = True

# 初始下载延迟
# AUTOTHROTTLE_START_DELAY = 5

# 高并发请求时最大延迟时间
# AUTOTHROTTLE_MAX_DELAY = 60

# Scrapy请求的平均数量应该并行发送每个远程服务器
# AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0

# 启用显示接收到的每个响应的节流状态
# AUTOTHROTTLE_DEBUG = False

# 启用和配置HTTP缓存(默认情况下禁用)
# HTTPCACHE_ENABLED = True
# HTTPCACHE_EXPIRATION_SECS = 0
# HTTPCACHE_DIR = 'httpcache'
# HTTPCACHE_IGNORE_HTTP_CODES = []
# HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

settings模版

# !/usr/bin/python3.9
# -*- coding:utf-8 -*-
# @author:inganxu
# CSDN:inganxu.blog.csdn.net
# @Date:2021年12月22日
# Scrapy settings for jzda_project project
#
# For simplicity, this file contains only settings considered important or
# commonly used. You can find more settings consulting the documentation:
#
#     https://docs.scrapy.org/en/latest/topics/settings.html
#     https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
#     https://docs.scrapy.org/en/latest/topics/spider-middleware.html
import random

# -----------------------------settings模板--------------------------------------------
"""
Ctrl + R 将 jzda_project 替换为自己的爬虫项目名称即可
jzda_project    是作者的爬虫项目名称
自己根据需求关闭部分功能(功能前面使用 # 即可转变为备注)
"""

BOT_NAME = 'jzda_project'
SPIDER_MODULES = ['jzda_project.spiders']
NEWSPIDER_MODULE = 'jzda_project.spiders'

# -----------------------------防反爬配置----------------------------
# 是否遵循 Robot协议
ROBOTSTXT_OBEY = False

# 对于失败的HTTP请求(如超时)进行重试会降低爬取效率,当爬取目标基数很大时,舍弃部分数据不影响大局,提高效率
RETRY_ENABLED = False

# 请求下载超时时间,默认180秒
DOWNLOAD_TIMEOUT = 20

# 这是响应的下载器下载的最大尺寸,默认值:1073741824 (1024MB)
DOWNLOAD_MAXSIZE=1073741824

# 它定义为响应下载警告的大小,默认值:33554432 (32MB)
DOWNLOAD_WARNSIZE=33554432

USER_AGENT_LIST = [
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
    "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
    "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",
    "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",
    "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
    "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",
]
USER_AGENT = random.choice(USER_AGENT_LIST)

# 设置默认请求头
DEFAULT_REQUEST_HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en'}

# -----------------------日志文件配置-----------------------------------
# 是否启用logging
# LOG_ENABLED=True

# logging使用的编码
# LOG_ENCODING='utf-8'

# 它是利用它的日志信息可以被格式化的字符串
# LOG_FORMAT='%(asctime)s [%(name)s] %(levelname)s: %(message)s'

# 它是利用它的日期/时间可以格式化字符串
# LOG_DATEFORMAT='%Y-%m-%d %H:%M:%S'

# 日志文件名
# LOG_FILE = "dg.log"

# 日志文件级别,默认值:“DEBUG”,log的最低级别。可选的级别有: CRITICAL、 ERROR、WARNING、INFO、DEBUG 。
LOG_LEVEL = 'WARNING'

# ------------------------并发延迟配置:-------------------------------
# 最大请求并发数
CONCURRENT_REQUESTS = 32

# 为同一个网站的请求配置延迟(会跟上面的并发请求冲突)
DOWNLOAD_DELAY = 3

# 下载延迟只遵循以下其中一个:
CONCURRENT_REQUESTS_PER_DOMAIN = 16        # 每个域的并发请求
# CONCURRENT_REQUESTS_PER_IP = 16            # 每个IP的并发请求

# 禁用cookies,有些站点会从cookies中判断是否为爬虫
COOKIES_ENABLED = False                    # 启用cookies

# 禁用Telnet控制台(默认启用)
TELNETCONSOLE_ENABLED = False

# 启动或禁用爬行器中间件
# SPIDER_MIDDLEWARES = {
#    'jzda_project.middlewares.JzdaProjectSpiderMiddleware': 543,
# }

# 启动或禁用爬行器下载件
# DOWNLOADER_MIDDLEWARES = {
#    'jzda_project.middlewares.JzdaProjectDownloaderMiddleware': 543,
# }

# 启用或禁用扩展
# EXTENSIONS = {
#    'scrapy.extensions.telnet.TelnetConsole': None,
# }

# 配置项目管道
# ITEM_PIPELINES = {
#    'jzda_project.pipelines.JzdaProjectPipeline': 300,
# }

# 启用和配置AutoThrottle扩展(默认情况下禁用)
# AUTOTHROTTLE_ENABLED = True

# 初始下载延迟
AUTOTHROTTLE_START_DELAY = 5

# 高并发请求时最大延迟时间
AUTOTHROTTLE_MAX_DELAY = 60

# Scrapy请求的平均数量并行发送每个远程服务器
# AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0

# 启用显示接收到的每个响应的节流状态
# AUTOTHROTTLE_DEBUG = False

# 启用和配置HTTP缓存(默认情况下禁用)
# HTTPCACHE_ENABLED = True
# HTTPCACHE_EXPIRATION_SECS = 0
# HTTPCACHE_DIR = 'httpcache'
# HTTPCACHE_IGNORE_HTTP_CODES = []
# HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

# --------------------------缓存配置:-------------------------------
# 打开缓存
# HTTPCACHE_ENABLED = True

# 设置缓存过期时间(单位:秒)
# HTTPCACHE_EXPIRATION_SECS = 0

# 缓存路径(默认为:.scrapy/httpcache)
# HTTPCACHE_DIR = 'httpcache'

# 忽略的状态码
# HTTPCACHE_IGNORE_HTTP_CODES = []
# HTTPERROR_ALLOWED_CODES = [302, 301]

# 缓存模式(文件缓存)
# HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

参考链接:

Python爬虫系列之----Scrapy(六)settings.py配置文件详解_fendo-CSDN博客_scrapy settings配置

[403]scrapy setting配置及说明_周小董-CSDN博客_scrapy settings配置

scrapy项目中settings参数的使用详解_he_ranly的博客-CSDN博客_scrapy框架setting

Settings — Scrapy 1.0.5 文档

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inganxu

感谢您的支持!!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值