zoukankan      html  css  js  c++  java
  • scrapy框架 & xpath常用基本语法

    1、创建项目

    scrapy startproject myproject    #myproject 为项目名

    2、列出所有模板

    scrapy genspider -l

    3、创建爬虫

    scrapy genspider -t crawl zhihu zhihu.com    # zhihu 为爬虫名 zhihu.com为爬取网站域名
    scrapy genspider spiders zhihu.com    # spiders为爬虫名 zhihu.com为爬取网站域名
     

    4、运行spider

    scrapy crawl spidername  # 输出日志加源代码

    scrapy crawl spidername --nolog  # 只输出源代码

    5、check 用来检查代码是否有错误

    scrapy check

    6、list 返回项目里面所有spider的名称

    scrapy list
    # fetch 输出日志及网页源代码
    scrapy fetch http://www.baidu.com# fetch --nolog --headers 输出响应头
    scrapy fetch --nolog --headers http://www.baidu.com
    
    # --nolog --no--redirect 禁止重定向
    scrapy fetch --nolog --no--redirect http://www.baidu.com

    7、编辑spider文件:

    scrapy edit <spider>      # 相当于打开vim模式,实际并不好用,在IDE中编辑更为合适。

    8、将网页内容保存下来,并在浏览器中打开当前网页内容,直观呈现要爬取网页的内容: 

    scrapy view <url>

     9、运行spider:

    scrapy runspider spiders.py  # spiders为爬虫py文件

    xpath语法:

    1. 基础语法:

      1 nodename:节点定位
      2 .  :当前节点
      3 /  :根节点
      4 // :任意位置
      5 ./ :从单签节点的根节点向下匹配
      6 .//:从当前节点向下任意位置匹配
      7 text():获取节点的文本
      8 @属性:获取节点的属性
    2. 属性定位:多属性匹配 & 单属性多值匹配

      1 多属性匹配:'//div/div/p[@class="item" and @name="ptag"]'
      2 单属性多值匹配:'//div[contains(@class,"item")]'
    3. 按序选择

      1 索引定位:'//div/ul/li[3]/text()' ,注意的是索引从1开始
      2 last()函数:'//div/li[last()]/text()' ,定位最后一个;'//div/li[last()-1]/text()' ,定位倒数第二个
      3 position()函数:'//div/ul/li[position()>1]/text()定位第一个以后不包含第一个
    4. 嵌套选择

      1 进过xpath定位匹配到的节点,进行xpath匹配
      2 li_list = '//div/ul/li'    # 有10个li
      3 for li in li_list:
      4     title = li.xpath('表达式')
    5. extract()与extract_first()区别

      1 extract()  返回的所有数据,存在一个list里。
      2 extract_first()返回的是一个string,是extract()结果中第一个值。
  • 相关阅读:
    [AHOI 2005]COMMON 约数研究
    [AHOI 2016初中组]迷宫
    [HNOI 2002]营业额统计
    [HAOI 2012]音量调节
    [HAOI 2010]软件安装
    [NOI 2015]荷马史诗
    浏览器同源政策
    docker 进程 转载:https://www.cnblogs.com/ilinuxer/p/6188303.html
    docker 进程 转载:
    redis 缓存问题,转载:https://www.cnblogs.com/liangsonghua/p/www_liangsonghua_me_22.html
  • 原文地址:https://www.cnblogs.com/ZH-YC/p/14202563.html
Copyright © 2011-2022 走看看