Python Scrapy数据抓取——创建项目

2016-7-5 邪哥

使用Scrapy 命令行工具创建项目及蜘蛛

所谓事出有因,这一系列的文章就是介绍如何使用scrapy讲国家统计局的城乡区划数据给扒拉下来的

所以我们在前一节安装测试scrapy的时候,使用的样例链接便是我们需要其数据的页面


好了,废话完毕,咱们进入正题,首先创建抓取项目

[root@localhost ~]# mkdir -p /data/jeen
[root@localhost ~]# chown -R jeen:jeen /data/jeen/
[root@localhost ~]# su jeen
[jeen@localhost root]$ cd /data/jeen/
[jeen@localhost jeen]$ mkdir pyscrapy
[jeen@localhost jeen]$ cd pyscrapy/ 
[jeen@localhost pyscrapy]$ scrapy startproject govstats
New Scrapy project 'govstats', using template directory '/usr/local/python/2.7.12/lib/python2.7/site-packages/scrapy/templates/project', created in:
    /data/jeen/pyscrapy/govstats

You can start your first spider with:
    cd govstats
    scrapy genspider example example.com
[241267 refs]
#按照提示咱们创建一个自己的蜘蛛
[jeen@localhost pyscrapy]$ cd govstats/ 
[jeen@localhost govstats]$ scrapy genspider jarea www.stats.gov.cn
Created spider 'jarea' using template 'basic' in module:
  govstats.spiders.jarea
[241272 refs]
#到这边 就有一个默认的抓取方法了,你可以留意过程中相关目录的文件变化
咱们去做一些小调整,让它抓取分析一些我们需要的数据
需要注意的是:python是按照缩进,进行代码域划分的,所以尤其要注意空格和Tab的区分使用。
推荐统一使用空格,避免代码执行时出现异常
另外就是可以注意到,文件顶部的 # -*- coding: utf-8 -*-
这个指定了文件编码,还有一种写法就是  ##coding=utf-8

好了 咱们回到主题,修改自动生成的 抓取文件

[jeen@localhost govstats]$ vi govstats/spiders/jarea.py 
#修改 start_urls 内容如下
    start_urls = (
        'http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2014/index.html',
    )
#在parse 方法中添加如下代码
        print "==Province==URL" + response.url
        tds = response.css(".provincetr").xpath('./td')
        for td in tds:
            code = td.xpath("./a/@href").extract()[0]
            code = code.replace('.html','')
            name = td.xpath(".//text()").extract()[0]
            name = name.strip()
            print code," ",name    
#完成后保存退出
接下来尝试抓取 看看效果 :)
[jeen@localhost govstats]$ scrapy crawl jarea --nolog
==Province==URLhttp://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2014/index.html
11   北京市
12   天津市
13   河北省
14   山西省
15   内蒙古自治区
21   辽宁省
22   吉林省
23   黑龙江省
31   上海市
32   江苏省
33   浙江省
34   安徽省
35   福建省
36   江西省
37   山东省
41   河南省
42   湖北省
43   湖南省
44   广东省
45   广西壮族自治区
46   海南省
50   重庆市
51   四川省
52   贵州省
53   云南省
54   西藏自治区
61   陕西省
62   甘肃省
63   青海省
64   宁夏回族自治区
65   新疆维吾尔自治区
[303391 refs]
#可以看到,希望得到的数据已经分析出来了
好的,到这边可以看到抓取已经初见成效


但是,光这样打印出来没鸟用啊,我们要的是让这些数据能发挥作用啊

不急,走到这一步之后,有很多课余的东西需要补充

你可能需要先了解下python的语法结构

scrapy提供的工具类,已经具体的运作流程

如何分析获取页面中的有用信息 

xpath css 选择器的规则怎么写 

网页如果不是utf-8编码怎么办 ... 等等等等

但这些都不是短短的一篇文章能讲清楚的,有疑问的童鞋,还需自行充充电

后续咱们再做深入操作 :)


后端 Python Scrapy

(0) (1933)

发表评论: