Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1741401
  • 博文数量: 297
  • 博客积分: 285
  • 博客等级: 二等列兵
  • 技术积分: 3006
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-06 22:04
个人简介

Linuxer, ex IBMer. GNU https://hmchzb19.github.io/

文章分类

全部博文(297)

文章存档

2020年(11)

2019年(15)

2018年(43)

2017年(79)

2016年(79)

2015年(58)

2014年(1)

2013年(8)

2012年(3)

分类: Python/Ruby

2018-01-04 22:33:53

scrapy 是一个强大的爬虫工具。 

0. 安装,在Kali linux 下安装很方便。

点击(此处)折叠或打开

  1. apt-get update
  2. apt-get install python3-scrapy

1. 命令行基础使用如下:

点击(此处)折叠或打开

  1. scrapy startproject myproject
  2. #创建一个project
  3. scrapy genspider wikiSpider en.wikipedia.org
  4. #生成一个spider
  5. scrapy list
  6. #列出所有的spider
  7. scrapy shell
  8. #进入scrapy shell
  9. #scrapy shell 后面可以直接跟上URL例如:
  10. scrapy shell chinaunix.net
  11. #在scrapy shell里面可以使用TAB来自动补全 
  12. 例如:
  13. In [3]: response.body
       response.body            response.flags           response.request          
       response.body_as_unicode response.follow          response.selector         
       response.copy            response.headers         response.status          >
       response.css             response.meta            response.text             
       response.encoding        response.replace         response.url 

感觉scrapy shell 非常好用,response 就是你需要parse的内容了。通常用XPATH来取所需要的数据,例如.

点击(此处)折叠或打开

  1. In [5]: response.xpath('//title/text()').extract_first()
  2. Out[5]: 'Unix技术网 = 全球最大的Linux/Unix应用与开发者社区 = IT人的网上家园'
  3. #下面的这一行,可以取到所有的A标签里href有chinaunix字段的a标签的href attribute,意味着我可以取到这个webpage上所有链接的URL.
  4. In [9]: response.xpath('//a[contains(@href,"chinaunix")]/@href').extract()
  5. #extract() 返回是一个列表,extract_first()会返回列表的第一项,其实就是 list[0].
  6. response.xpath('//a[contains(@href,"chinaunix")]/@href').extract_first()


2. 其他的一些命令行

点击(此处)折叠或打开

  1. #爬给定的URL或者网站的命令简单粗暴
  2. scrapy crawl [SPIDERNAME]
  3. #可以通过-s 传入参数,例如
  4. scrapy crawl apts -s LOG_FILE=wiki.log 
  5. #可以输出文件xml,json,csv
  6. scrapy crawl apts -o output.json -t json
    scrapy crawl apts -o output.csv -t csv
    scrapy crawl apts -o output.xml -x xml


3. 可以在settings.py 里面设定LOG_LEVEL.
有5个LOG_LEVEL, 好熟悉的LEVEL, 跟linux的syslog倒是一脉相承.

点击(此处)折叠或打开

  1. CRITICAL/ERROR/WARNING/DEBUG/INFO

4. 2017年12月整个一个月没有写一篇博客,惭愧,打算以后每5天,写一篇,争取每个月最少写6篇.


阅读(1340) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~