首页 > 编程语言 > 详细

python Scrapy 爬虫模块学习(一)

时间:2020-05-04 12:00:08      阅读:52      评论:0      收藏:0      [点我收藏+]

python Scrapy 爬虫模块学习(一)

初步了解

Scrapy是一个用于爬取网站并提取结构化数据的应用程序框架,可用于各种有用的应用程序,例如数据挖掘,信息处理或历史档案。
Scrapy最初是为Web抓取而设计的,它还可以用于使用API??(例如Amazon Associates Web Services)或作为通用Web搜寻器来提取数据。

示例spider的演练

为了展示Scrapy带来了什么,我们将使用最简单的运行蜘蛛的方法向介绍Scrapy Spider的示例。

以下是在分页之后从网站http://quotes.toscrape.com抓取著名报价的spider的代码:

import scrapy

class QuotesSpider(scrapy.Spider):
    name = quotes
    start_urls = [
        http://quotes.toscrape.com/tag/humor/,
    ]

    def parse(self, response):
        for quote in response.css(div.quote):
            yield {
                author: quote.xpath(span/small/text()).get(),
                text: quote.css(span.text::text).get(),
            }

        next_page = response.css(li.next a::attr("href")).get()
        if next_page is not None:
            yield response.follow(next_page, self.parse)


将其放在文本文件中,将其命名为quotes_spider.py的python文件,然后使用runspider命令运行spider程序:


 scrapy runspider quotes_spider.py -o quotes.json 

完成此操作后,我们将在quotes.json文件中具有JSON格式的引号列表,其中包含文本和作者,如下所示:

[{
    "author": "Jane Austen",
    "text": "\u201cThe person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.\u201d"
},
{
    "author": "Groucho Marx",
    "text": "\u201cOutside of a dog, a book is man‘s best friend. Inside of a dog it‘s too dark to read.\u201d"
},
{
    "author": "Steve Martin",
    "text": "\u201cA day without sunshine is like, you know, night.\u201d"
},
...]


那么这一段代码发生了什么呢?

当运行命令scrapy runspider quotes_spider.py时,Scrapy会在其中查找Spider定义,并通过其搜寻器引擎运行它。

爬虫开始于对start_urls属性中定义的URL发出请求,并调用默认的回调方法parse,并将响应对象作为参数传递。在解析回调中,我们使用CSS选择器循环引用元素,生成包含提取的引用文本和作者的Python dict,查找指向下一页的链接,并使用与回调相同的解析方法安排另一个请求。

在这里,您会注意到Scrapy的主要优势之一:请求是异步调度和处理的。这意味着Scrapy无需等待请求完成和处理,它可以同时发送另一个请求或执行其他操作。这也意味着即使某些请求失败或在处理过程中发生错误,其他请求也可以继续执行。

虽然这使您能够进行非常快速的爬虫,但是Scrapy还使您可以通过一些设置来控制爬虫的操作。您可以执行以下操作,例如设置每个请求之间的下载延迟,限制每个域或每个IP的并发请求数量。

python Scrapy 爬虫模块学习(一)

原文:https://www.cnblogs.com/Iloveyy/p/12825885.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!