scarpy基础
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
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基础的更多相关文章
- Python爬虫-01:爬虫的概念及分类
目录 # 1. 为什么要爬虫? 2. 什么是爬虫? 3. 爬虫如何抓取网页数据? # 4. Python爬虫的优势? 5. 学习路线 6. 爬虫的分类 6.1 通用爬虫: 6.2 聚焦爬虫: # 1. ...
- scrapy 基础
安装略过 创建一个项目 scrapy startproject MySpider #或者创建时存储日志scrapy startproject --logfile='../logf.log' MySpi ...
- Scrapy爬虫框架 基础
1< scrapy的安装 命令行安装 pip install scrapy <常见错误是缺少 wim32api 安装win32api pip install pywin32 <还有就 ...
- java基础集合经典训练题
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...
- node-webkit 环境搭建与基础demo
首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Golang, 以17个简短代码片段,切底弄懂 channel 基础
(原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- HTTPS 互联网世界的安全基础
近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...
- Swift与C#的基础语法比较
背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...
随机推荐
- FFmpeg开发笔记(十八)FFmpeg兼容各种音频格式的播放
FFmpeg结合SDL可以播放音频文件,也能播放视频文件中的音频流,<FFmpeg开发实战:从零基础到短视频上线>一书第10章的示例程序playaudio.c支持播放mp3和aac两种格 ...
- 【股票爬虫教程】我用100行Python代码,爬了雪球网5000只股票,还发现一个网站bug!
目录 一.爬取目标 二.分析网页 三.爬虫代码 四.同步视频 五.get完整源码 一.爬取目标 您好,我是@马哥python说,今天继续分享爬虫案例. 爬取网站:雪球网的沪深股市行情数据 具体菜单:雪 ...
- Golang 爬虫02
验证邮箱 目标站点: https://movie.douban.com/top250
- 使用 Docker 部署 WebTop 运行 Linux 系统
1)项目介绍 GitHub:https://github.com/linuxserver/docker-webtop WebTop 它是一个基于 Linux ( Ubuntu 和 Alpine 两种版 ...
- .NET使用P/Invoke来实现注册表的增、删、改、查功能
注册表可以用来进行存储一些程序的信息,例如用户的权限.或者某些值等,可以根据个人需要进行存储和删减. 当前注册表主目录: 引用包 Wesky.Net.OpenTools 1.0.5或者以上版本 操作演 ...
- 5G MEC 之本地分流实现方式
目录 文章目录 目录 前言 LADN ULCL IPv6 Multi-homing(BP) 典型应用场景 前言 最近同事发表了一片非常棒的文章,笔者在此之上进行了补充,转发至此与大家分享. 本地分流作 ...
- openstack 错误(报错)集合
1. 执行nova命令报错: ERROR (CommandError): You must provide a username or user ID via --os-username, --os- ...
- 推荐几款卓越的 .NET 开源搜索组件
前言 在当今日益数据化的世界中,信息的检索和搜索功能对于各种应用来说变得至关重要. 无论是电子商务网站.企业资源规划系统.还是内容管理系统,高效的搜索功能都是提升用户体验.促进业务发展的关键. 因此, ...
- Wpf Bitmap(Image)Base64,Url,文件Path,Stream转BitmapSource(ImageSource),无需外部dll
直接上代码 using System; using System.Drawing; using System.IO; using System.Windows.Forms; using System. ...
- itest(爱测试) 开源接口测试,敏捷测试管理平台10.0.0GA 发布
一:itest work 简介 itest work 开源敏捷测试管理,包含极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock,还有压测 ,又有丰富的统计分析,8合1工作站.可按 ...