• 喵叔的爬虫--第一节--先动动小手儿


    嗨,大家好,我是喵叔。今天开始跟大家讲解一下Python 爬虫的编写,今天是第一节课,这篇文章主要是带领大家动手体验一下爬虫的编写。废话不多说,开始上课。

    零、什么是爬虫,爬虫能干什么

    小明问:喵叔,什么是爬虫呢?
    喵叔答:这里说的爬虫可不是有生命的虫子 mAO0T1.gif ,而是是一种按照一定的规则,自动地抓取互联网信息的程序或者脚本。

    小亮问:爬虫能干什么呢?
    喵叔答:爬虫能干的事儿很多,我刚才也说了爬虫可以抓取互联网信息,这些信息包括多种类型,例如图片、视频、文字、文件等等。一般来说像百度这类的搜索引擎网站的爬虫,爬取的是几乎所有的互联网信息,个人编写的爬虫一般爬取的是其中几种类型的信息,比如带 FBI Warning 的视频,小姐姐的图片,或者是具有不可描述内容的文件。

    一、动起小手儿

    扯了点简单的知识后,现在开始动动小手儿,跟我一起来编写一个爬虫。

    1. 创建项目
      我们打开IDE,创建一个的项目,项目名字很霸气,叫 PaChongDemo

    2. 创建爬虫
      接下来,一个重要人物登场,他的英文名叫 Scrapy,但是呢这个家伙总是迷路,因此我们需要引导他来到我们的项目里。在项目根目录下,打开命令行输入如下命令:

    pip install scrapy
    

    输入完命令后,他就来到了我们的项目里。我们让他来到我们的项目中可不是白来的,我们需要让他为我们干活,首先要让他创建爬虫,我们只需对他下命令即可:

    scrapy startproject bookDemo
    

    这时我们可以看到,他已经为我们创建了爬虫项目,项目的目录结构如下:
    mEkrb6.png

    在这个命令中,startproject 是创建爬虫项目的命令,bookDemo 是爬虫项目的根目录的名称。

    1. 编写代码
      这一步我们开始编写爬虫代码,在编写代码之前我们需要分析一下我们要爬取的网页。目标网址是:books.toscrape.com 。这个网址是专门用来练习scrapy 的网站。(以Chrome为例)我们在任意一本书上右键审查元素。我们会看到书的信息包含在 article 元素中,其中书名在 h3 元素中的 a 标签的 title 属性中,价格信息在 具有 class=price_color 属性的 p 标签里。我们爬取数据不可能说只爬取一页的数据对吧,因此我们还需要分析下一页的路径。在页面上的 next 元素上右键选择审查元素,这时我们发现下一页的地址在 具有 class=‘next’ 属性的 li 元素中的 a 标签的 href 属性上,并且是一个相对地址。分析完,我们就要开始编写代码了。

    我们直接通过命令创建爬虫的基本代码,在命令行中输入如下命令:

    scrapy genspider books books.toscrape.com
    

    其中的 books 是爬虫的名字,这个很重要,我们在运行爬虫的时候需要告诉 Scrapy 运行哪个爬虫,如果爬虫没有名字的话,就好比我们告诉 Scrapy :你去把那谁运行起来。然后他就一脸懵X mEZfFf.gif

    命令执行完后,我们会在 spiders 文件夹下看到多了一个 books.py 的文件,这个就是刚才我们创建的爬取目标网站的 spiders 文件。我们在 parse 函数中,输入提取页面信息的代码:

    import scrapy
    
    
    class BooksSpider(scrapy.Spider):
        name = 'books'
        allowed_domains = ['books.toscrape.com']
        start_urls = ['http://books.toscrape.com/']
    
        def parse(self, response):
            for book in response.css('article.product_pod'):
                name = book.xpath('./h3/a/@title').extract_first()
                price = book.css('p.price_color::text').extract_first()
                yield {
                    'name': name,
                    'price': price
                }
            next_url = response.css('ul.pager li.next a::attr(href)').extract_first()
            if next_url:
                next_url = response.urljoin(next_url)
                yield scrapy.Request(next_url, callback=self.parse)
    
    

    这里我来解释一下每个属性的意思:

    属性 解释
    name 爬虫的名字
    allowed_domains 可以访问的域,可以是多个
    start_urls 爬虫起始爬取页面,可以是多个
    parse 默认页面解析函数,主要完成两个任务,一个是提取页面数据,另一个是提取页面链接并产生对链接的下载请求,这哥们儿好累
    1. 运行爬虫
      在命令行输入如下命令,将爬取的数据存储在csv文件中
    scrapy crawl books -o books.csv
    

    命令完成后,我们会看到项目中多了一个books.csv文件,并且里面存储了我们爬取到数据。

    二、课堂作业

    注意听,下面的也别讲话了,我现在留一下这节课的作业。将我本节写的代码,自己动手写一遍,并且写一千字读后感啊,明天学习委员交上来。

  • 相关阅读:
    逐浪CMSv8.2发布-集成Node与Vue脚手架和PowerShell支持的新一代网站管理系统
    文化赢未来-智能做字体-逐浪字体大师1.0发布
    逐浪CMS对用户注册字段正则的自由定义(注册字段必填)
    两大高招逐浪CMS中定义省地市县三级字段显示方式
    开放融合易用@门户移动开发新体验-逐浪CMS v8.0.1全面发布[基于dotNET Core]
    点触科技安全验证新模式与逐浪CMS3.9.3新功能预览
    摩拜ofo挥师三四线市场 第二梯队面临"团灭"危机
    谷歌提出新的字体调用方案帮助提高中文字体的加载速度
    [图]Windows 10 Build 16273版本更新发布:新增可变式字体Bahnschrift
    rabbitMQ面试题 整理给自己
  • 原文地址:https://www.cnblogs.com/gangzhucoll/p/12778175.html
Copyright © 2020-2023  润新知