1. 创建项目
scrapy startproject 项目名称
2. 进入项目
cd 项目名称
3. 创建爬虫
scrapy genspider 名字 域名
4. 可能需要start_urls,修改成你要抓取的那个页面
进入spiders里面,会看见一个按你创建名字的python文件
例如: scrapy genspider xiao www.4399.com
那么在spiders里面就有一个xiao.py
然后start_urls就是放其实页面url
5. 对数据进行解析,在spider里面的parse(response)方法中进行解析
def parse(self, response): # 该方法默认是用来处理解析的
response.text# 拿到页面源代码
response.xpath()
response.css() 解析数据的时候,需要注意,默认xpath()返回的是selector对象,
想要拿到数据必须使用extrace() 提取数据
extract() 返回列表
extract_first() 返回一个数据 yield 返回数据 -> 把数据交给pipeline来进行持久化存储 6.在pipeline中完成数据的存储
# 记住:管道默认是不生效的,需要取settings里面取开启管道
class 类名:
# 处理数据的方法,item:数据,spider:爬虫
def process_item(self, item, spider):
item:数据
spider:爬虫
return item #必须要return东西,否则下一个管道收不到数据 7.设置settings.py文件将pipeline进行生效设置
ITEM_PIPELINES = {
# key就是管道的路径
# value就是管道的优先级
'管道的路径': 优先级, 优先级级越低,优先级越高
例:"game.pipelines.GamePipeline": 300,
} # 在settings.py里面添一条下面的语句,那个警告以下的日志就不会出现
LOG_LEVEL = 'WARNING' # 警告及警告以上才出现 8.运行爬虫
scrapy crawl 爬虫的名字
例: scrapy crawl xiao
 
xiao.py
import scrapy

class XiaoSpider(scrapy.Spider):
name = "xiao" # 爬虫名字
allowed_domains = ["www.4399.com"] # 允许的域名
start_urls = ["https://www.4399.com/"] # 起始页面url def parse(self, response): # 该方法默认是用来处理解析的
# 本来是用来解析的
# print(response)
# 拿到页面源代码
# print(response.text) # 获取页面所有中游戏名字
# txt = response.xpath('//*[@id="skinbody"]/div[10]/div[1]/div[1]/ul/li/a/text()').extract() # 提取内容
# print(txt) # 分块提取数据
li_list = response.xpath('//*[@id="skinbody"]/div[10]/div[1]/div[1]/ul/li')
for li in li_list:
# 如果在后面添[0]取出来成字符串的话,如果该元素是空的就会报错
# name = li.xpath('./a/text()').extract()[0]
# extract_first提取一项内容,如果没有,返回None
name = li.xpath('./a/text()').extract_first()
# print(name)
# break # 测试
dic = {
'name':name
} # 需要用yield将数据传递给管道
yield dic # 如果返回的是数据,直接可以认为是给了管道pipelines

pipelines.py

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html # useful for handling different item types with a single interface
from itemadapter import ItemAdapter # 记住:管道默认是不生效的,需要取settings里面取开启管道
class GamePipeline:
# 处理数据的方法,item:数据,spider爬虫
def process_item(self, item, spider):
print(item)
print(spider.name)
return item class NewPipeline:
# 处理数据的方法,item:数据,spider爬虫
def process_item(self, item, spider):
item['love'] = '陶喆'
return item

settings.py

# Scrapy settings for game 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 = "game" SPIDER_MODULES = ["game.spiders"]
NEWSPIDER_MODULE = "game.spiders" LOG_LEVEL = 'WARNING' # 警告及警告以上才出现
# Crawl responsibly by identifying yourself (and your website) on the user-agent
# USER_AGENT = "game (+http://www.yourdomain.com)" # Obey robots.txt rules
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 = {
# "game.middlewares.GameSpiderMiddleware": 543,
# } # Enable or disable downloader middlewares
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
# DOWNLOADER_MIDDLEWARES = {
# "game.middlewares.GameDownloaderMiddleware": 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 = {
# key就是管道的路径
# value就是管道的优先级
"game.pipelines.GamePipeline": 300,
"game.pipelines.NewPipeline": 299, # 数字越低优先级越高
} # 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" # Set settings whose default value is deprecated to a future-proof value
REQUEST_FINGERPRINTER_IMPLEMENTATION = "2.7"
TWISTED_REACTOR = "twisted.internet.asyncioreactor.AsyncioSelectorReactor"
FEED_EXPORT_ENCODING = "utf-8"

scarpy基础的更多相关文章

  1. Python爬虫-01:爬虫的概念及分类

    目录 # 1. 为什么要爬虫? 2. 什么是爬虫? 3. 爬虫如何抓取网页数据? # 4. Python爬虫的优势? 5. 学习路线 6. 爬虫的分类 6.1 通用爬虫: 6.2 聚焦爬虫: # 1. ...

  2. scrapy 基础

    安装略过 创建一个项目 scrapy startproject MySpider #或者创建时存储日志scrapy startproject --logfile='../logf.log' MySpi ...

  3. Scrapy爬虫框架 基础

    1< scrapy的安装 命令行安装 pip install scrapy <常见错误是缺少 wim32api 安装win32api pip install pywin32 <还有就 ...

  4. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  5. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  6. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  7. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  8. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  9. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  10. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

随机推荐

  1. 深入理解 C++ 中的多态与文件操作

    C++ 多态 多态(Polymorphism)是面向对象编程(OOP)的核心概念之一,它允许对象在相同操作下表现出不同的行为.在 C++ 中,多态通常通过继承和虚函数来实现. 理解多态 想象一个场景, ...

  2. neovim 使用系统剪贴板

    neovim 使用系统剪贴板 1.vim 与 neovim 使用系统剪切板的不同 Nvim has no direct connection to the system clipboard. Inst ...

  3. centos 7 开启 httpd 服务和 80 端口

    centos 7 开启 httpd 服务和 80 端口 yum install -y httpd systemctl start httpd firewall-cmd --add-service=ht ...

  4. 《Modern C++ Design》之上篇

    如下内容是在看侯捷老师翻译的<Modern C++ Design>书籍时,整理的code和摘要,用于不断地温故知新. 第一章 1. 运用 Template Template 参数实作 Po ...

  5. Linux — 进程管理

    进程创建 进程通过fork()创建的大致过程: #include <stdio.h> #include <stdlib.h> #include <sys/types.h& ...

  6. linux文件查找工具详解

    linux文件查找详解 目录 linux文件查找详解 1.linux文件查找工具 1.1 find命令详解 1.1.1 根据文件名查找 1.1.2 根据属主属组查找 1.1.3 根据文件类型查找 1. ...

  7. 瑞亚时间管理大师,基于 .NET 6 和 Angular 构建的在线任务管理协作平台

    瑞亚时间管理大师 瑞亚时间管理大师, 是一个在线的任务管理.项目管理. 团队协作平台.瑞亚 拥有现代化的页面风格,高效.简便,同时适合个人和团队使用. 瑞亚对个人免费,提供了无限制的任务,列表,和空间 ...

  8. linux 为普通用户配置sudo权限

    目录 一.关于sudo 二.sudo的工作过程 三.为普通用户配置sudo权限 3.1 方法一:把普通用户的附属组更改为wheel,使其具有sudo权限(推荐) 3.2 方法二:修改/etc/sudo ...

  9. C#老码农的职业生涯

    开头白 大家好,我是tibos,19年10月1号由深圳回武汉的码农,目前入职武汉福禄网络,最近刷到的年终总结也比较多,赶在这最后一天,我也来凑个热闹 心路历程 -> 菜鸟入江湖 13年开启码农的 ...

  10. Swoole 源码分析之 epoll 多路复用模块

    首发原文链接:Swoole 源码分析之 Http Server 模块 大家好,我是码农先森. 引言 在传统的IO模型中,每个IO操作都需要创建一个单独的线程或进程来处理,这样的操作会导致系统资源的大量 ...