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()结果中第一个值。
posted @ 2020-12-28 17:12  流年—  阅读(330)  评论(0编辑  收藏  举报