1.建立项目:

#建立名为tuto的项目
scrapy startproject tuto

2.进入项目目录:

cd tuto

3.建立域名任务:

#minyan任务名;后面是任务对应的域名
scrapy genspider minyan quotes.toscrape.com

cmd全程记录:

E:\a\scrapy_test>scrapy startproject tuto
New Scrapy project 'tuto', using template directory 'c:\python\python37\lib\site
-packages\scrapy\templates\project', created in:
E:\a\scrapy_test\tuto You can start your first spider with:
cd tuto
scrapy genspider example example.com E:\a\scrapy_test>cd tuto E:\a\scrapy_test\tuto>scrapy genspider minyan quotes.toscrape.com
Created spider 'minyan' using template 'basic' in module:
tuto.spiders.minyan E:\a\scrapy_test\tuto>

4.pycharm打开项目,建立用于调试的文件:main.py

用到的函数解析:https://www.cnblogs.com/chenxi188/p/10876690.html

main.py:

# -*- coding: utf-8 -*-
__author__='pasaulis'
import sys,os
from scrapy.cmdline import execute #获取到当前目录,添加到环境变量,方便运行cmd不必再去找目录
#.append()添加到环境变量;.dirname()输出不含文件名的路径;.abspath(__file__)得到当前文件的绝对路径
sys.path.append(os.path.dirname(os.path.abspath(__file__))) #调用命令运行爬虫scrapy crawl 爬虫名minyan.py中(name的值)
execute(["scrapy","crawl","minyan"])

查看页面,确定需要解析哪些数据,在items.py里写出:

import scrapy

class TutoItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
text=scrapy.Field()
author=scrapy.Field()
tags=scrapy.Field()
#pass

minyan.py:

# -*- coding: utf-8 -*-
import scrapy
from tuto.items import TutoItem #从tuto文件夹下的items.py导入其中的类TutoItem用于创建列表 class MinyanSpider(scrapy.Spider):
name = 'minyan'
allowed_domains = ['quotes.toscrape.com']
start_urls = ['http://quotes.toscrape.com/'] def parse(self, response):
quotes=response.css('.quote')
for quote in quotes:
item=TutoItem()
item['text']=quote.css('.text::text').extract_first()
item['author']=quote.css('.author::text').extract_first()
item['tags']=quote.css('.keywords::attr(content)').extract_first()
yield item #下一页
next=response.css('.next > a::attr(href)').extract_first()
url=response.urljoin(next) #补全网址
yield scrapy.Request(url=url,callback=self.parse) #请求下一页,并回调自身方法

settings.py把此条改为false

# Obey robots.txt rules
ROBOTSTXT_OBEY = False

运行代码:

在pycharm最下terminal里: scrapy crawl mingyan

或main.py里运行

scrapy练习1的更多相关文章

  1. Scrapy框架爬虫初探——中关村在线手机参数数据爬取

    关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...

  2. scrapy爬虫docker部署

    spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...

  3. scrapy 知乎用户信息爬虫

    zhihu_spider 此项目的功能是爬取知乎用户信息以及人际拓扑关系,爬虫框架使用scrapy,数据存储使用mongo,下载这些数据感觉也没什么用,就当为大家学习scrapy提供一个例子吧.代码地 ...

  4. ubuntu 下安装scrapy

    1.把Scrapy签名的GPG密钥添加到APT的钥匙环中: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 6272 ...

  5. 网络爬虫:使用Scrapy框架编写一个抓取书籍信息的爬虫服务

      上周学习了BeautifulSoup的基础知识并用它完成了一个网络爬虫( 使用Beautiful Soup编写一个爬虫 系列随笔汇总 ), BeautifulSoup是一个非常流行的Python网 ...

  6. Scrapy:为spider指定pipeline

    当一个Scrapy项目中有多个spider去爬取多个网站时,往往需要多个pipeline,这时就需要为每个spider指定其对应的pipeline. [通过程序来运行spider],可以通过修改配置s ...

  7. scrapy cookies:将cookies保存到文件以及从文件加载cookies

    我在使用scrapy模拟登录新浪微博时,想将登录成功后的cookies保存到本地,下次加载它实现直接登录,省去中间一系列的请求和POST等.关于如何从本次请求中获取并在下次请求中附带上cookies的 ...

  8. Scrapy开发指南

    一.Scrapy简介 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. Scrapy基于事件驱动网络框架 Twis ...

  9. 利用scrapy和MongoDB来开发一个爬虫

    今天我们利用scrapy框架来抓取Stack Overflow里面最新的问题(),并且将这些问题保存到MongoDb当中,直接提供给客户进行查询. 安装 在进行今天的任务之前我们需要安装二个框架,分别 ...

  10. python3 安装scrapy

    twisted(网络异步框架) wget https://pypi.python.org/packages/dc/c0/a0114a6d7fa211c0904b0de931e8cafb5210ad82 ...

随机推荐

  1. C++ 语言程序设计(清华大学)1

    1.回文数字判断方法(逆过来数值相等):y=y*10+x%10; x /= 10; return(x==y) 2.int rand(void)函数,所需头文件<cstdlib> ,功能是求 ...

  2. 吴裕雄--天生自然java开发常用类库学习笔记:取得当前日期

    import java.util.* ; // 导入需要的工具包 class DateTime{ // 以后直接通过此类就可以取得日期时间 private Calendar calendar = nu ...

  3. python_os 的知识点

    1. os.getcwd() #获得当前路径 2. os.listdir(path) #列出path路径下的所有目录名和文件名包括后缀 3. os.mkdir(path) #在path创建一个目录 4 ...

  4. Codeforces1243C Tile Painting

    原题面:https://codeforces.com/contest/1243/problem/C 题目大意:给定数字n,有n个方块,第i个和第j个之间的距离(abs(i-j))如果是n的因子,那么第 ...

  5. springBoot (适合ssm)

    很多小白在学ssm的时候,选用idea,网上应该有很多教程,创建maven项目,创建spring项目的都有,五花八门. 最近接触了springBoot,这个项目类型适用于ssm,还不用去创建很多文件夹 ...

  6. USB Windows驱动 音频解决方案芯片DP108

    DP108是一款完全替代CM108的高度集成的单芯片USB音频解决方案芯片.方便的USB即插即用的兼容性,用户可以快速创建易用性,高质量和便携式USB音频产品基于高度集成的单芯片解决方案.所有重要的模 ...

  7. node - 路由的使用

    一,服务器文件 app.js  .( 要使用路由的文件)   const express = require('express') const app = express() const swig = ...

  8. [洛谷Luogu]P1803 线段覆盖问题

    贪心想法题解的各位dalaodalaodalao都讲得很清楚了,在下就提供一种桶排的做法吧. 因为给出数据范围 0≤ai<bi≤10000000≤ai<bi≤10000000≤ai< ...

  9. 八十三、SAP中的ALV创建之二,ALV相关的类型池定义

    一.与ALV相关的类型都是在TYPE-POOLS:SLIS中.我们来到SE11 二.常用的定义有fieldca和layout等,用于显示字段,和控制信息数据等. 三.我们以VBAK表为例,用ALV输出 ...

  10. ACM-售货员难题

    题目描述:售货员的难题  某乡有n个村庄(1< n < 20),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0 < s < 1000)是已知的,且A村到B村与B村到 ...