zoukankan      html  css  js  c++  java
  • scrapy入门教程

    我来说一下我创建第一个spider小demo的过程,以及过程中出现的问题,供大家参考,希望大家少走弯路!

    我的是windows系统,在pycharm上编码的。下面是创建运行爬虫的步骤:

    一、创建一个scrapy项目

    进入打算存储代码的目录中,在控制台中输入以下命令:

    scrapy startproject 项目名

    例如:scrapy startproject tutorial

    该命令将会创建包含下列内容的tutorial目录:

    这些文件分别是:

    • scrapy.cfg : 项目的配置文件
    • tutorial/ : 该项目的python模块。
    • tutorial/items.py : 项目中的item文件。
    • tutorial/pipelines.py : 项目中的pipelines文件。
    • tutorial/settings.py : 项目的设置文件。
    • tutorial/spiders/ : 放置spider代码的目录。

    二、定义Item

    Item是保存爬取到的数据的容器;其使用方法和python字典类似, 并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。

    编辑 tutorial 目录中的 items.py 文件:

    三、编写爬取网站的 spider 并提取 Item

    Spider是用户编写用于从单个网站(或者一些网站)爬取数据的类。

    其包含了一个用于下载的初始URL,如何跟进网页中的链接以及如何分析页面中的内容, 提取生成item的方法。

    以下为我们的第一个Spider代码,保存在 tutorial/spiders 目录下的 dmoz_spider.py 文件中:

    为了创建一个Spider,您必须继承 scrapy.Spider 类, 且定义以下三个属性:

      • name : 用于区别Spider。 该名字必须是唯一的,您不可以为不同的Spider设定相同的名字。
      • start_urls :包含了Spider在启动时进行爬取的url列表。 因此,第一个被获取到的页面将是其中之一。 后续的URL则从初始的URL获取到的数据中提取。
      • parse() :是spider的一个方法。 被调用时,每个初始URL完成下载后生成的Response对象将会作为唯一的参数传递给该函数。 该方法负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的Request对象。

     四、爬取

    进入项目的根目录,执行下列命令启动spider:

    scrapy crawl 爬虫名

    例如:scrapy crawl dmoz      ----这一步很多人容易把爬虫名跟项目名搞混,爬虫名就是你自己定义的那个name

    运行这一步很多人容易出错,

    可能有以下3种解决办法:

    1.看看你在命令行输入的scrapy crawl dmoz中爬虫名,是不是跟程序中name字段定义的一样,谨防拼错!

    2.scrapy crawl dmoz 这个命令一定要在项目目录下运行,比如我的,就必须在跟scrapy.cfg同级那个tutorial目录下运行

    3.再有就是看scrapy.cfg文件是否在项目目录下,一定放在项目目录下!

    然后,你以为可以顺利运行了?我的又出现一个错误

    解决办法:

    pip install pypiwin32

    安装过程还会出错!!!!

    解决办法用:

    步骤 (1):   pip --default-timeout=100 install -U pip

    步骤 (2):   pip --default-timeout=100 install -U (这里加上你要下载的库的名字),如:

                            pip --default-timeout=100 install -U selenium

    至此,再运行scrapy crawl dmoz就成功啦!

     

  • 相关阅读:
    初识人工智能(一):数据分析(三):numpy科学计算基础库(二)
    Python3标准库:urllib.parse分解URL
    Python3标准库:selectors I/O多路复用抽象
    Python3标准库:ipaddress Internet地址
    初识人工智能(一):数据分析(二):numpy科学计算基础库(一)
    Python3标准库:concurrent.futures管理并发任务池
    初识人工智能(一):数据分析(一):matplotlib绘图库
    Python3标准库:asyncio异步I/O、事件循环和并发工具
    Python3标准库:multiprocessing像线程一样管理进程
    Python3标准库:threading进程中管理并发操作
  • 原文地址:https://www.cnblogs.com/miya55555/p/10040847.html
Copyright © 2011-2022 走看看