【爬虫——00001】favorite scrapy tutorial


Declaration

: 以下代码测试过没有问题,时间点20200603***

create project

scrapy startproject tutorial

**创建的项目 目录包含以下内容:**在做A时可以把文件目录放到问题里,看是否能说出每个文件是做什么的?在这里插入图片描述

我的第一只小蜘蛛

quotes_spider.py 下 tutorial/spiders 项目中的目录:

import scrapy


class QuotesSpider(scrapy.Spider):
    name = "quotes"           

    def start_requests(self):
        urls = [
            'http://quotes.toscrape.com/page/1/',
            'http://quotes.toscrape.com/page/2/',
        ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        page = response.url.split("/")[-2]
        filename = 'quotes-%s.html' % page
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s' % filename)

name :标识蜘蛛。它在一个项目中必须是唯一的,也就是说,不能为不同的蜘蛛设置相同的名称。

start_requests() :必须返回一个ITable of requests(您可以返回一个请求列表或编写一个生成器函数),蜘蛛将从中开始爬行。随后的请求将从这些初始请求中依次生成。

parse() :将调用的方法,用于处理为每个请求下载的响应。响应参数是的实例 TextResponse 它保存页面内容,并有进一步有用的方法来处理它。

这个 parse() 方法通常解析响应,将抓取的数据提取为dict,并查找新的URL以跟踪和创建新的请求。( Request 从他们那里。

引擎盖下面发生了什么?(对上段代码运行原理的说明)

Scrapy安排了 scrapy.Request 返回的对象 start_requests 蜘蛛的方法。在接收到每个响应时,它实例化 Response 对象并调用与请求关联的回调方法(在本例中,为 parse 方法)将响应作为参数传递。

上段代码可以简写,如下: (以下代码测试过没有问题,时间点20200603)

import scrapy


class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = [
        'http://quotes.toscrape.com/page/1/',
        'http://quotes.toscrape.com/page/2/',
    ]

    def parse(self, response):
        page = response.url.split("/")[-2]
        filename = 'quotes-%s.html' % page
        with open(filename, 'wb') as f:
            f.write(response.body)

让蜘蛛跑起来

scrapy crawl name的名字

scrapy crawl quotes

如何用shell方式运行Scrapy?

在这里插入图片描述结果显示如下:
在这里插入图片描述

CSS 选择器的使用方法?

在这里插入图片描述

CSS 选择器的作用?

css响应对象围绕xml/html元素,可以利用css响应对象进一步细化提取数据.

在title标签中提取文本的方法?

在这里插入图片描述

CSS查询 ::text 的作用?

意味着我们只想直接选择内部的文本元素 元素。如果我们不指定 ::text ,我们将得到完整的标题元素,包括它的标记:

.getall() 的作用?

调用.getall()的结果是一个列表:选择器可能返回多个结果,所以我们将它们全部提取出来

.get() 的作用?

当你知道你只想得到第一个结果时,就像在本例中一样,你可以这样做:
然而,使用 .get() 直接在A上 SelectorList 实例避免了 IndexError 回报 None 当它找不到任何与所选内容匹配的元素时
在这里插入图片描述
不推荐下面的方法.
在这里插入图片描述

re() 的作用?

re() 用正则提取数据的方法
在这里插入图片描述

XPath: 简介

例子:基于上面的
在这里插入图片描述

css选择器实例

问题部分:
在这里插入图片描述
Http://quotes.toscrape.com网站是由以上内容组成的名人名言,如何选出所有的上面的内容,用css选择器?

答案部分
在这里插入图片描述
问题部分
在这里插入图片描述答案部分
在这里插入图片描述问题部分
在这里插入图片描述
答案部分 在这里插入图片描述

问题部分

在这里插入图片描述答案部分
在这里插入图片描述

问题部分
在这里插入图片描述答案部分
在这里插入图片描述

问题部分
在这里插入图片描述答案部分
在这里插入图片描述

蜘蛛的饲料出口,json格式

scrapy crawl name名称 -o name名称.json

scrapy crawl quotes -o quotes.json

多次执行的结果如下:
在这里插入图片描述

JSON Lines格式输出饲料

scrapy crawl quotes -o quotes.jl

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值