爬虫笔记24:Scrapy概述、Scrapy的工作流程、Scrapy快速入门、items.py文件的使用

一、Scrapy概述
1、什么是?
异步爬虫框架
2、Scrapy它有什么优势?
可配置和可扩展性非常高;
Scrapy框架是基于Twisted异步网络框架:复杂 、闭包
(更多参考http://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.html)

二、Scrapy的工作流程
在这里插入图片描述
在这里插入图片描述
红框中就是我们通常需要编写的。

三、Scrapy快速入门
目标url:https://www.douban.com/
需求:爬取的内容 、标题。如下图:
在这里插入图片描述

第一步 、创建scrapy项目
在dos命令行 或者pycharm终端输入:
scrapy startproject mySpider(scrapy项目的名称)

结果:
在这里插入图片描述
items.py文件:将数据封装,比如标题;
middlewares.py文件:我们折叠之后可以看到,里面是2个类:
在这里插入图片描述
pipelines.py文件:管道,数据的保存等是在这里编写。
settings.py文件:配置项,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在上图中相应处取消注释。

(补充,为了使结果中没有各种警告字段,我们可以在settings.py文件中任一空白行写入:LOG_LEVEL = ‘WARNING’,如下图
在这里插入图片描述

第二步 创建爬虫程序
根据上一步结果中的提示:
在这里插入图片描述
继续在cmd中输入cd mySpider,之后,又因为我们要爬取的网站是www.douban.com,我们继续输入
scrapy genspider douban “douban.com” (douban是爬虫的名字 ;douban.com是爬取的范围)

结果:
在这里插入图片描述
我们打开douban.py(爬虫文件)可以看到:
在这里插入图片描述
我们在解析函数中做个简单的编写,如下图:
在这里插入图片描述
第三步 运行scrapy的命令(有2种方法)
方法1、 在终端 scrapy crawl douban #(爬虫名字)
在这里插入图片描述
方法2、 可以运行py文件
我们先在mySpider文件夹中(选中该文件夹右键)创建一个py文件,再右键run运行:
在这里插入图片描述
或者:
cmdline.execute(‘scrapy crawl db’.split())

第四步 获取数据(基于页面分析)
我们从第三步的结果(下图)可知:
在这里插入图片描述
response是一个HtmlResponse的类对象,是对象,就会有方法,我们可以具体看看它里面封装了些什么方法:
按住ctrl,左键点击进去。
在这里插入图片描述
结果:
在这里插入图片描述
发现它什么也没有,就是继承了父类TextResponse,我们继续ctrl左键点击进去看TextResponse类的具体封装。
在这里插入图片描述
我们发现,它有一个xpath方法,那么response也可以继承使用。

所以:

import scrapy
#from scrapy.http.response.html import HtmlResponse

class DbSpider(scrapy.Spider):
    name = 'db'
    allowed_domains = ['douban.com'] 
    start_urls = ['http://douban.com/'] 

    # 解析方法
    def parse(self, response):
        li_lst = response.xpath('//div[@class="side-links nav-anon"]/ul/li')
        item = {}
        for li in li_lst:
            item['name'] = li.xpath('a/text()')
            print(item)

结果:
在这里插入图片描述
发现获得的是selector对象。
如果要获得selector对象当中的文本数据,有以下方法:
get():返回一条数据
getall() :返回多条数据

所以:
在这里插入图片描述
结果:
在这里插入图片描述
发现有空,所以:

import scrapy
#from scrapy.http.response.html import HtmlResponse

class DbSpider(scrapy.Spider):
    name = 'db'
    allowed_domains = ['douban.com'] 
    start_urls = ['http://douban.com/'] 

    # 解析方法
    def parse(self, response):
        li_lst = response.xpath('//div[@class="side-links nav-anon"]/ul/li')
        item = {}
        for li in li_lst:
            item['name'] = li.xpath('a/em/text()').get()
            if item['name'] == None:    
                item['name'] = li.xpath('a/text()').get()
            print(item)

结果:
在这里插入图片描述

四、items.py文件的使用
(1)我们打开items.py文件,写入:title = scrapy.Field()
在这里插入图片描述
(2)在爬虫文件中引用items.py的MyspiderItem类:
在这里插入图片描述
第1步:选中mySpider文件夹右键-Mark-Directory as-Sources Root,把mySpider文件夹设置成根目录(之后,该文件夹会成蓝色)
第2步:from导入类
第3步:实例化对象

(3)具体数据的赋值
在这里插入图片描述
必须是items.py文件中注册的变量名:修改后得到正确结果
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值