爬取干货集中营数据(1)
得到妹纸图 ಠ౪ಠ
-
新建Scrapy项目:
- 在你的scrapy爬虫ENV中执行命令: $> scrapy startproject gank 你将看到在当前目录下生成了一个如下结构的目录:
- 进入gank项目,在 gank/spiders 目录下新建文件 gank_meizi.py
- 在你的scrapy爬虫ENV中执行命令: $> scrapy startproject gank 你将看到在当前目录下生成了一个如下结构的目录:
-
代码来了
在gankMeiZi.py中优雅的敲入如下代码:
# -- coding: utf-8 --
author = 'dongsj'import scrapy from scrapy.spider import Spider from scrapy.selector import Selector class GankMeiZiSpider(scrapy.Spider): name = 'gankMeiZi' allowed_domains = ["gank.io"] start_urls = [ "http://gank.io/" ] def parse(self, response): """ 用来爬取http://gank.io 妹子图片 """ sel = Selector(response) meiziImg = sel.xpath("//div[@class='outlink']/h1/img/@src").extract() yield { "images": meiziImg }
-
爬一张妹子图来玩(这里只能简单的爬取一张妹子图哦~):
- 运行项目的方式
- 进入项目的顶层目录
- $> scrapy crawl gankMeiZi
- 直接运行py文件的方式
- 进入 gank_meizi.py 所在目录
- $> scrapy runspider gank_meizi.py 或者 $> scrapy runspider gank_meizi.py -o result.json 前者结果输出在控制台,后者结果会被重定向到result.json文件中
- 运行项目的方式
知识点
上面的代码中用到了:
- Spider
- Selector
我们创建的GankMeiZiSpider继承自 scrapy.Spider, 它具备几个属性:
- name: 作为你的Spider的唯一标识,不同的Spider必须保持 name 唯一 (爬妹子的是爬妹子的,爬汉子的是爬汉子的,一定要区分开).
- start_urls: 这个URL列表,表示爬虫开始爬取的开始URL.第一页的URL一般配置在该列表中,更深的URL会根据返回的response解析获得.
- parse(): 该方法负责解析 start_urls 返回的response,提取其中你感兴趣的数据.它接收唯一参数 Response( start_urls 对应的Response)
页面元素提取器 Selector : (后续介绍)
- XPaht 表达式
- CSS