Scrapy爬虫的基本使用

演示HTML地址
演示HTML页面地址:http://python123.io/ws/demo.html
文件名称:demo.html

  • 产生步骤:
  • 步骤1:建立一个Scrapy爬虫工程
    按住shift键右键进入文件夹命令行
    输入scrapy startproject python123demo
    • 生成的工程目录:
      • python123demo/ ------------------------>外层目录
      • scrapy.cfg ------------------->部署Scrapy爬虫的配置文件(将这样的爬虫放大特定的服务器上,并且在服务器配置好相关的操作接口,对于本机使用的爬虫来讲,不需要改变部署的配置文件)
      • python123demo/ ---------->Scrapy框架的用户自定义python代码(Scrapy框架对应的所有文件所在的目录)
      • scrapy.cfg ----------->部署Scrapy爬虫的配置文件
      • python123demo/ --------->
      • __init__.py--------------------->初始化脚本,用户不需要编写
      • items.py --------------->Items代码模板(继承类),Items类代码模板,需要继承Scrapy库提供的Item的类,对于一般的例子,不需要用户编写这个文件
      • middlewares.py ---------->Middlewares代码模板(继续类),用户希望扩展middlewares的功能,需要把这些功能写到这个文件中
      • pipelines.py ------------->Pipelines代码模板(继承类)
      • settings.py -------------->Scrapy爬虫的配置文件,如果希望优化爬虫功能。需要修改settings.py文件中对应的配置项
      • spiders --------->Spiders代码模板目录(继承类),目录下存放的是python123demo这个工程中所建立的爬虫,其中的爬虫是要符合爬虫模块的约束
      • __init__.py ---------->初始文件,无需修改
      • __pycache__ --------->缓存目录,无需修改

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 步骤2:在工程中产生一个Scrapy爬虫
    命令约定用户需要给出爬虫的名字以及所爬取的网站
D:\pycodes>cd python123demo
  D:\pycodes\python123demo>scrapy genspider demo python123.io#生成一个名称为demo的spider,也就是一个爬虫
  Created spider 'demo' using template 'basic' in module:
      python123demo.spiders.demo

查看demo.py文件

# -*- coding: utf-8 -*-
import scrapy


class DemoSpider(scrapy.Spider):#这个类必须是继承scrapy.Spider类的子类
    name = 'demo'#当前爬虫的名字叫demo
    allowed_domains = ['python123.io']#最开始用户提交给命令行的域名,指的这个爬虫在爬取网站的时候,只能爬取这个域名以下的相关文件
    start_urls = ['http://python123.io/']#以列表包含的一个或多个url,就是scrapy框架所要爬取页面的初始页面


    def parse(self, response):#解析页面的空方法
        pass

parse()用于处理相应,解析内容形成字典,发现新的URL爬取请求

  • 步骤三:配置产生的spider
    修改demo.py文件,使他能够按照我们的要求去访问我们希望访问的那个链接,并且对相关的链接内容进行爬取。
    对链接的解析部分定义的功能是将返回的html页面存成文件
# -*- coding: utf-8 -*-
import scrapy


class DemoSpider(scrapy.Spider):#这个类必须是继承scrapy.Spider类的子类
    name = 'demo'#当前爬虫的名字叫demo
#    allowed_domains = ['python123.io']#最开始用户提交给命令行的域名,指的这个爬虫在爬取网站的时候,只能爬取这个域名以下的相关文件
    start_urls = ['http://python123.io/ws/demo/html']#以列表包含的一个或多个url,就是scrapy框架所要爬取页面的初始页面

#self面向对象类所属关系的标记,response相当于从网页返回内容所存储或对应的对象
#我们要将response的内容写到一个html文件中
    def parse(self, response):#解析页面的空方法
        #定义文件的名字
        fname=response.url.split('/')[-1]

        #将返回内容保存到文件
        with open(fname, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s.' % name)
  • 步骤4:运行爬虫,获取网页
  • 打开命令行,使用crawl命令来执行叫demo的爬虫。捕获页面在demo.html文件中

猜你喜欢

转载自blog.csdn.net/Pang_ling/article/details/104346520