Python爬虫scrapy

原创
2017/03/05 13:59
阅读数 76.5W

准备工作

  • Python
  • scrapy
  • IDE(我选择使用Pycharm)

虚拟环境

  • tianshl@T:~/workspace$ mkdir reptile
  • tianshl@T:~/workspace$ cd reptile/
  • tianshl@T:~/workspace/reptile$ virtualenv venv
  • tianshl@T:~/workspace/reptile$ source venv/bin/activate

安装scrapy

  • (venv) tianshl@T:~/workspace/reptile$ pip install scrapy

创建一个工程,例如:reptile

  • (venv) tianshl@T:~/workspace/reptile$ scrapy startproject reptile

此条指令会得到scrapy创建的一个目录结构

|__  reptile/
    |__  reptile/
        |__  spiders/
            |__  __init__.py
        |__  __init__.py
        |__  items.py
        |__  middlewares.py
        |__  pipelines.py
        |__  settings.py
    |__ scrapy.cfg

编写爬虫脚本

  • 以锐聘学院首页推荐课程为例
  • 在spiders目录下创建mooc.py
  • 编辑mooc.py
# -*- coding: utf-8 -*-

import scrapy
from scrapy import Selector


class MooCollege(scrapy.Spider):
    # 爬虫的名称
    name = 'MooCollege'
    # 爬取的入口(锐聘学院)
    start_urls = ['http://www.moocollege.cn/']
    # 域名
    host = 'http://www.moocollege.cn'

    def parse(self, response):
        ele = Selector(response)
        # 以推荐课程为例,获取课程名称和课程链接
        courses = ele.xpath(".//*[@id='recommend_courses_show']/a")
        for course in courses:
            print '课程名称: ', course.xpath('div[2]/div/text()').extract_first()
            print '课程链接', '{}{}'.format(self.host, course.xpath('@href').extract_first())

执行爬虫脚本

  • (venv) tianshl@T:~/workspace/reptile$ cd reptile/
  • (venv) tianshl@T:~/workspace/reptile/reptile$ scrapy crawl MooCollege

运行结果如下

课程名称:  Java Web技术及应用
课程链接 http://www.moocollege.cn/courses/MOOCOLLEGE/S003/Always/about?course_base=56&course_package=-1
课程名称:  Unity3D基础入门
课程链接 http://www.moocollege.cn/courses/MOOCOLLEGE/G001/Always/about?course_base=46&course_package=-1
课程名称:  UI入门:零基础时尚APP界面设计
课程链接 http://www.moocollege.cn/courses/MOOCOLLEGE/U001/Always/about?course_base=148&course_package=-1

至此,一个简单的爬虫就写好了



数据永久化

  • 使用Pipeline可以将数据保存在文件或数据库中
展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部