• Python爬虫教程-33-scrapy shell 的使用


    本篇详细介绍 scrapy shell 的使用,也介绍了使用 xpath 进行精确查找

    Python爬虫教程-33-scrapy shell 的使用

    • scrapy shell 的使用
    • 条件:我们需要先在环境中,安装 scrapy 包,如果还没有安装,请参照:Python爬虫教程-30-Scrapy 爬虫框架介绍
    • 为什么要使用 scrapy shell?
      • 当我们需要爬取智联招聘,某一个岗位的信息的时候,如果我们当然不能简单的把整个页面的 HTML 都作为返回的结果吧,这时候我们需要提取数据,我们可以使用正则,但是呢使用正则由很容易出问题,也就需要我们不断地去调试,如果说对于一个较大的 Scrapy 项目去测试正则的结果是否正确,就过于麻烦了,这时候,我们要使用 scrapy shell 去调试,测试成功后,在拷贝到我们的项目中就可以了
    • 怎么打开 scrapy shell?
      • 1.打开【cmd】
      • 2.进入需要的 Anaconda 环境
        • 例如:

        • 我的环境名为:learn

          activate learn

      • 3.使用命令进入 scrapy shell "需要访问的地址"
    • 4.操作截图:
      这里写图片描述
      这里会出现一大堆,不用管,最后会有一个代码输入的地方:
      这里写图片描述
      这里就是我们写代码的地方

    scrapy shell 的简单使用

    • **1. response **
      • 执行命令之后,可以看到有很多 [s] 开头的东西,就是我们可以在下面代码输入框中使用的变量**
      • 执行后,会自动将指定 url 的网页
      • 下载完后,url 的内容保存在 response 的变量中
        • response.body
        • response.headers
        • response.headers['Server']
        • response.xpath() 使用 xpath
        • response.css() 使用 css 语法选取内容
    • 2.例如:我们使用:view(response):
      • 截图:
        这里写图片描述
      • 结果就是调用浏览器,查看视图
    • 3.例如:我们想查看 headers 的内容:
      • 使用:response.headers
      • 截图:
        这里写图片描述
    • 4.一回车就执行了,怎样多行输入呢?
      • 在 scrapy shell 中,我们只进行简单的多行输入,比如函数,for循环,更多的多个函数,特别多行的话,我们何尝不使用 Pycharm 呢,我们使用 scrapy shell 的目的就是简单执行,快速
      • 例如:for 循环打印 response.headers
      • 截图:
        这里写图片描述
      • 这时候又有新的问题了,for 循环,可以多行了,但回车没法执行了
      • 这时候使用的是:Ctrl + Enter 键执行
    • 5.怎样输出属性的值呢?
      • 例如:我们打印 response.headers 中的一个 Set-Cookie 项对于的值
      • 截图:
        这里写图片描述
    • 6.selector
      • 选择器,允许用户使用选择器来选择自己想要的内容
      • response.selector.xpath:response.xpath 是 response.selector.xpath 的快捷方式
      • response.selector.css:response.css 是 response.selector.css 的快捷方式
      • selector.extract:把节点内容用 unicode 形式返回
      • selector.re:允许用户通过正则选择内容

    response.xpath 使用案例

    • 1.使用 scrapy shell "http://baidu.com" 访问百度,得到response
    • 2.目标:我们是想要找到这个页面的所有 div 头,并赋值给 divs
    • 3.使用 len(divs) 查看共有多少个 div
    • 4.我们输出下标为 0 的 div 头信息
    • 操作截图:
      这里写图片描述
    • 5.这里只是头信息,想要获取 div 的内容代码
      • 使用 divs[1].extract()
      • 截图:

    这里写图片描述

    • 6.使用 xpath 精确查找

      • 1.我们想找表格中的一个 a 标签

        response.xpath( "//table/tr/td/a" )

    • 2.//table 表示不管 table 在哪个标签的下面,找到所有的 table 标签

    • 3.这里 / 只是表示在哪个标签里,是谁的子标签,不一定是儿子标签,也包括孙子标签

    • 4.如果需要查找的页面有很多很多 a 标签,那么这样找,范围还是太宽了

    • 5.按标签属性查找:

      res_href = response.xpath( "//table/tr/td/a/@href" )

      • 这时候,我就可以找到所有 a 标签的链接,我们可以打印一下链接

      **for i in res_href : **
      print( i.extract() )

    • 6.按标签属性的值查找:

      • 例如:我们想要查找表格中一个 id = teacher 的一个列

      res_href = response.xpath( "//table/tr/td[@id='teacher']" )

    以上是使用 xpath 精确查找,当然也可以使用 re 正则 去查找,本篇就介绍到这里了,拜拜
    更多文章链接:Python 爬虫随笔


    - 本笔记不允许任何个人和组织转载
  • 相关阅读:
    git 好文引流
    无法访问Swagger 或 druid面板无法访问 #报异常
    MachineLearning入门-7(数据理解)
    MachineLearning入门-6(数据导入)
    MachineLearning入门-5(Python和Scipy简介)
    百度PaddlePaddle入门-10(数据处理)
    百度PaddlePaddle入门-9(建模)
    百度PaddlePaddle入门-8(模型探讨)
    MachineLearning入门-4(理解数据集)
    百度PaddlePaddle入门-7 (Numpy的应用)
  • 原文地址:https://www.cnblogs.com/xpwi/p/9601058.html
Copyright © 2020-2023  润新知