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. Asp .Net Core 系列:国际化多语言配置

    目录 概述 术语 本地化器 IStringLocalizer 在服务类中使用本地化 IStringLocalizerFactory IHtmlLocalizer IViewLocalizer 资源文件 ...

  2. 手把手搭建WebSocket多人在线聊天室(SpringBoot+WebSocket)

    前言 本文中搭建了一个简易的多人聊天室,使用了WebSocket的基础特性. 源代码来自老外的一篇好文: https://www.callicoder.com/spring-boot-websocke ...

  3. 记录Notion API Authorization中的一个坑

    正文 Notion官方文档的Authorization部分提到: In your integration code, include the token in the Authorization he ...

  4. Spring如何控制Bean的加载顺序

    前言 正常情况下,Spring 容器加载 Bean 的顺序是不确定的,那么我们如果需要按顺序加载 Bean 时应如何操作?本文将详细讲述我们如何才能控制 Bean 的加载顺序. 场景 我创建了 4 个 ...

  5. PageOffice——动态填充Word模板并在线编辑

    说明:使用pageoffice动态给word模板填充数据,插入图片.excel.word格式的文件和创建表格 一.准备工作: 本地创建一个doc或者docx格式的文件,在文件中需要插入数据的地方设置以 ...

  6. WPF,Frame控件的一个BUG

    我使用WPF默认的frame <Frame Style="{DynamicResource FrameStyle1}" x:Name="frame" He ...

  7. redis三主三从集群快速搭建

    redis集群快速搭建 1 本文以redis6.2.6版本为例,快速搭建一套三主三从的redis集群,已经提前将脚本写好,只需要在节点上面进行执行即可安装 #!/bin/bash install_re ...

  8. kubernets之高级调度

    一 节点的污点以及pod的容忍度以及节点的亲缘性对比 1.1 首先需要介绍的是节点的污点以及pod的污点容忍度 污点是节点的属性,容忍度是pod的属性,只有当一个pod的容忍度包含节点的污点,pod才 ...

  9. git cherry-pick合并其它分支的某次提交(commits)到当前分支

    git cherry-pick 可以选择某一个分支中的一个或几个commit(s)来进行操作. 例如,假设我们有个稳定版本的分支,叫v2.0.0,另外还有个开发版本的分支v3.0.0,我们不能直接把两 ...

  10. 通过计算巢部署 Puppet Enterprise 服务

    概述 Puppet Enterprise 是一款自动化软件,可帮助您和您的组织在管理 IT 基础设施的同时提高工作效率和敏捷性. 本文向您介绍如何开通计算巢上的 Puppet Enterprise 服 ...