Scrapy(1)Scrapy工程创建和目录了解

Scrapy工程创建

安装

pip install scrapy

使用

创建项目

scrapy startproject scrapyName

生成爬虫

cd scrapyName

scrapy genspider spiderName "www.spiderWeb.com"

运行

scrapy crawl spiderName

Scrapy文件含义

  1. scrapy.cfg :项目的配置文件

  2. scrapyName/ :项目的Python模块,将会从这里引用代码

  3. scrapyName/items.py :项目的目标文件

  4. scrapyName/pipelines.py :项目的管道文件

  5. scrapyName/settings.py :项目的设置文件

  6. scrapyName/spiders/ :存储爬虫代码目录

scrapy.cfg

在这里插入图片描述

scrapyName/items.py

在这里插入图片描述

scrapyName/pipelines.py

在这里插入图片描述

scrapyName/setting.py

# Scrapy settings for spiderName 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

BOT_NAME = 'spiderName' # 项目名称

SPIDER_MODULES = ['spiderName.spiders']
NEWSPIDER_MODULE = 'spiderName.spiders'


# Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = 'spiderName (+http://www.yourdomain.com)'

# Obey robots.txt rules
""" 是否遵循robot协议"""
ROBOTSTXT_OBEY = True  

# Configure maximum concurrent requests performed by Scrapy (default: 16)
""" 最大并发 """
#CONCURRENT_REQUESTS = 32   # 最大并发

# Configure a delay for requests for the same website (default: 0)
# See https://docs.scrapy.org/en/latest/topics/settings.html#download-delay
# See also autothrottle settings and docs
""" 下载延迟 """
#DOWNLOAD_DELAY = 3 

# The download delay setting will honor only one of:
#CONCURRENT_REQUESTS_PER_DOMAIN = 16
#CONCURRENT_REQUESTS_PER_IP = 16

# Disable cookies (enabled by default)
#COOKIES_ENABLED = False

# Disable Telnet Console (enabled by default)
#TELNETCONSOLE_ENABLED = False

# Override the default request headers:
#DEFAULT_REQUEST_HEADERS = {
#   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
#   'Accept-Language': 'en',
#}

# Enable or disable spider middlewares
# See https://docs.scrapy.org/en/latest/topics/spider-middleware.html
""" 爬虫中间件 """
#SPIDER_MIDDLEWARES = {
#    'spiderName.middlewares.scrapyNameSpiderMiddleware': 543,
#}

# Enable or disable downloader middlewares
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
""" 下载中间件 """
#DOWNLOADER_MIDDLEWARES = {
#    'spiderName.middlewares.scrapyNameDownloaderMiddleware': 543,
#}

# Enable or disable extensions
# See https://docs.scrapy.org/en/latest/topics/extensions.html
#EXTENSIONS = {
#    'scrapy.extensions.telnet.TelnetConsole': None,
#}

# Configure item pipelines
""" 管道 """
# See https://docs.scrapy.org/en/latest/topics/item-pipeline.html
#ITEM_PIPELINES = {
#    'spiderName.pipelines.scrapyNamePipeline': 300,
#}

# Enable and configure the AutoThrottle extension (disabled by default)
# See https://docs.scrapy.org/en/latest/topics/autothrottle.html
#AUTOTHROTTLE_ENABLED = True
# The initial download delay
#AUTOTHROTTLE_START_DELAY = 5
# The maximum download delay to be set in case of high latencies
#AUTOTHROTTLE_MAX_DELAY = 60
# The average number of requests Scrapy should be sending in parallel to
# each remote server
#AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0
# Enable showing throttling stats for every response received:
#AUTOTHROTTLE_DEBUG = False

# Enable and configure HTTP caching (disabled by default)
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings
#HTTPCACHE_ENABLED = True
#HTTPCACHE_EXPIRATION_SECS = 0
#HTTPCACHE_DIR = 'httpcache'
#HTTPCACHE_IGNORE_HTTP_CODES = []
#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

以下是一个简单的 Scrapy 工程示例,用于提取 Stack Overflow 网站上的职位信息: 1. 创建 Scrapy 工程 在命令行输入以下命令来创建一个新的 Scrapy 工程: ``` scrapy startproject stackoverflow_jobs ``` 这将创建一个名为 `stackoverflow_jobs` 的新目录,其包含 Scrapy 工程的基本结构。 2. 定义数据模型 在 `stackoverflow_jobs` 目录创建一个名为 `items.py` 的文件,并定义以下数据模型: ```python import scrapy class StackOverflowJob(scrapy.Item): title = scrapy.Field() company = scrapy.Field() location = scrapy.Field() job_type = scrapy.Field() date_posted = scrapy.Field() link = scrapy.Field() ``` 这个数据模型定义了我们要提取的职位信息的字段,包括标题、公司、地点、职位类型、发布日期和链接。 3. 定义爬虫 在 `stackoverflow_jobs/spiders` 目录创建一个名为 `jobs.py` 的文件,并定义以下爬虫: ```python import scrapy from stackoverflow_jobs.items import StackOverflowJob class JobsSpider(scrapy.Spider): name = "jobs" allowed_domains = ["stackoverflow.com"] start_urls = [ "https://stackoverflow.com/jobs" ] def parse(self, response): for job in response.css('div.-job'): item = StackOverflowJob() item['title'] = job.css('a.s-link::text').get() item['company'] = job.css('div.-company span::text').get() item['location'] = job.css('div.-company span.fc-black-500::text').get() item['job_type'] = job.css('div.-job-summary span::text').get() item['date_posted'] = job.css('div.-posted span::text').get() item['link'] = job.css('a.s-link::attr(href)').get() yield item next_page = response.css('a[data-gps-track="jobs_pagination_next_page"]::attr(href)').get() if next_page is not None: yield response.follow(next_page, self.parse) ``` 这个爬虫会从 Stack Overflow 的职位列表页面开始,依次提取每个职位的信息,并跟随下一页链接,直到没有更多的页面为止。 4. 运行爬虫 在命令行进入 `stackoverflow_jobs` 目录,并输入以下命令来启动爬虫: ``` scrapy crawl jobs -o jobs.csv ``` 这将运行我们定义的 `jobs` 爬虫,并将提取的数据保存到名为 `jobs.csv` 的 CSV 文件。 5. 分析数据 打开 `jobs.csv` 文件,你会看到 Scrapy 工程已经成功地提取了 Stack Overflow 网站上的职位信息,并将其保存到了 CSV 文件。你可以使用 Excel、Python 或其他工具来进一步分析这些数据,例如计算职位数量、比较不同职位类型的薪资水平等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值