专栏首页喵叔's 专栏喵叔的爬虫--第一节--先动动小手儿

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

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

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

小明问:喵叔,什么是爬虫呢? 喵叔答:这里说的爬虫可不是有生命的虫子

,而是是一种按照一定的规则,自动地抓取互联网信息的程序或者脚本。

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

一、动起小手儿

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

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

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

scrapy startproject bookDemo

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

在这个命令中,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

命令执行完后,我们会在 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文件,并且里面存储了我们爬取到数据。

二、课堂作业

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Scrspy 命令

    Scrapy 中的命令在开发中会经常用到,可以说没有命令就没有 Scrapy ,下面我就来讲解一下 Scrapy 常用的命令。

    喵叔
  • 智能爬虫框架

    爬虫应用的广泛,例如搜索引擎、采集数据、广告过滤、数据分析等。当我们对少数网站内容进行爬取时写多个爬虫还是有可能的,但是对于需要爬取多个网站内容的项目来说是不可...

    喵叔
  • Flask架站基础篇(七)--SQLAlchemy(1)

    喵叔
  • 最全Python爬虫:微信、知乎、豆瓣,一次“偷”个够!

    WechatSogou [1]– 微信公众号爬虫。基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字...

    BestSDK
  • Python爬虫与反爬虫左右互搏(带视频)

    爬虫与反爬虫是两类互斥的应用,它们争斗了多年。就像病毒程序与反病毒程序,永远是先有病毒程序,再有反病毒程序一样,爬虫程序总是先诞生,然后网站服务商就会想尽办法不...

    蒙娜丽宁
  • 找python爬虫小项目?github给你准备好了!

    即使我们都是程序员,但我们也并非都会修电脑,都会做酷炫的ppt,都会优化系统卡顿。其实程序员也是分行业、分专业的,就像医生也分内外科、呼吸科、神经科神的。

    efonfighting
  • 请不要污名化爬虫!

    最近有一篇名为《只因写了一段爬虫,公司200多人被抓!》的文章非常火,相信大家应该都看到了。

    云爬虫技术研究笔记
  • Java 网络爬虫,该怎么学?

    在后面的几年工作中,也参与了好几个爬虫项目,但是大多数都是使用 Python ,抛开语言不谈,爬虫也是有一套思想的。这些年写爬虫程序,对我个人的技术成长帮助非常...

    黄泽杰
  • 爬虫篇 | Python爬虫学前普及

    最近整理一个爬虫系列方面的文章,不管大家的基础如何,我从头开始整一个爬虫系列方面的文章,让大家循序渐进的学习爬虫,小白也没有学习障碍.

    龙哥
  • 如何给爸妈解释什么是“爬虫”?

    前段时间我妈突然问我:儿子,爬虫是什么?我当时既惊讶又尴尬,惊讶的是为什么我妈会对爬虫好奇?尴尬的是我该怎么给她解释呢?

    数据森麟

扫码关注云+社区

领取腾讯云代金券