Scrapy 是比较上层的库,基于中间层开发,它基于高层,所以它依赖许多其它库。事件驱动的异步技术。

Scrapy 爬取网页,以豆瓣电影 Top 250 为例子。

首先打开命令提示符,输入。scrapy startproject douban

使用 Scrapy 提供的 cmd 命令

  1. from scrapy import cmdline
  2. cmdline.execute("scrapy crawl doubanmovie".split())

设置 settings.py

  1. DOWNLOAD_DELAY = 2
  2. RANDOMIZE_DOWNLOAD_DELAY = True
  3. USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.54 Safari/536.5'
  4. COOKIES_ENABLED = True
  5. FEED_URI = u'file:douban.csv'
  6. FEED_FORMAT = 'csv'
  1. class DoubanMovieItem(Item):
  2. title = Field()
  3. movieInfo = Field()
  4. star = Field()
  5. quote = Field()

主要的爬虫程序:

  1. from scrapy import Request
  2. from scrapy import Selector
  3. from scrapy.spiders import Spider
  4. from douban.items import DoubanMovieItem
  5. class Douban(Spider):
  6. name = "douban"
  7. start_urls = ["https://movie.douban.com/top250"]
  8. url = 'https://movie.douban.com/top250'
  9. def parse(self, response):
  10. print("--- 爬取的内容 ---")
  11. print(response.url)
  12. item = DoubanMovieItem()
  13. selector = Selector(response)
  14. Movies = selector.xpath("//div[@class='info']")
  15. for eachMovice in Movies:
  16. title = eachMovice.xpath("div[@class='hd']/a/span/text()").extract()
  17. fullTitle = ''
  18. for each in title:
  19. fullTitle += each
  20. movieInfo = eachMovice.xpath("div[@class='bd']/p/text()").extract()
  21. # 评分,xpath 从的数组下标从 1 开始
  22. star = eachMovice.xpath("div[@class='bd']/div[@class='star']/span[2]/text()").extract()
  23. print(star)
  24. # 一句脍炙人口的话
  25. quote = eachMovice.xpath("div[@class='bd']/div[@class='star']/span[4]/text()").extract()
  26. if (quote):
  27. quote = quote[0]
  28. else:
  29. quote = ''
  30. item['title'] = fullTitle
  31. item['movieInfo'] = ";".join(movieInfo)
  32. item['star'] = star
  33. item['quote'] = quote
  34. yield item
  35. nextLink = selector.xpath("//div[@class='paginator']/span[@class='next']/a/@href").extract()
  36. if (nextLink):
  37. nextLink = nextLink[0]
  38. print("下一页", nextLink)
  39. yield Request(self.url + nextLink, callback=self.parse)

Scrapy 学习笔记爬豆瓣 250的更多相关文章

  1. Scrapy:学习笔记(2)——Scrapy项目

    Scrapy:学习笔记(2)——Scrapy项目 1.创建项目 创建一个Scrapy项目,并将其命名为“demo” scrapy startproject demo cd demo 稍等片刻后,Scr ...

  2. Scrapy:学习笔记(1)——XPath

    Scrapy:学习笔记(1)——XPath 1.快速开始 XPath是一种可以快速在HTML文档中选择并抽取元素.属性和文本的方法. 在Chrome,打开开发者工具,可以使用$x工具函数来使用XPat ...

  3. scrapy 学习笔记1

    最近一段时间开始研究爬虫,后续陆续更新学习笔记 爬虫,说白了就是获取一个网页的html页面,然后从里面获取你想要的东西,复杂一点的还有: 反爬技术(人家网页不让你爬,爬虫对服务器负载很大) 爬虫框架( ...

  4. scrapy学习笔记(1)

    初探scrapy,发现很多入门教程对应的网址都失效或者改变布局了,走了很多弯路.于是自己摸索做一个笔记. 环境是win10 python3.6(anaconda). 安装 pip install sc ...

  5. Scrapy学习笔记(5)-CrawlSpider+sqlalchemy实战

    基础知识 class scrapy.spiders.CrawlSpider 这是抓取一般网页最常用的类,除了从Spider继承过来的属性外,其提供了一个新的属性rules,它提供了一种简单的机制,能够 ...

  6. scrapy 学习笔记2

    本章学习爬虫的 回调和跟踪链接 使用参数 回调和跟踪链接 上一篇的另一个爬虫,这次是为了抓取作者信息 # -*- coding: utf-8 -*- import scrapy class Myspi ...

  7. scrapy学习笔记一

    以前写爬虫都是直接手写获取response然后用正则匹配,被大佬鄙视之后现在决定开始学习scrapy 一.安装 pip install scrapy 二.创建项目 scrapy startprojec ...

  8. Scrapy爬虫笔记 - 爬取知乎

    cookie是一种本地存储机制,cookie是存储在本地的 session其实就是将用户信息用户名.密码等)加密成一串字符串,返回给浏览器,以后浏览器每次请求都带着这个sessionId 状态码一般是 ...

  9. Python爬虫框架Scrapy学习笔记原创

     字号 scrapy [TOC] 开始 scrapy安装 首先手动安装windows版本的Twisted https://www.lfd.uci.edu/~gohlke/pythonlibs/#twi ...

随机推荐

  1. springBoot 静态变量@value取不到值

    在工具类中给静态变量初始化值,使用了springBoot的@Value注解,但是没有赋值成功,得到的是null @Value("${jdbc.url}")private stati ...

  2. TortoiseGit不用每次输入用户名和密码的方法

    TortoiseGit每次同步代码时,都会让输入用户名和密码,虽然安全,但是自己用有点麻烦. 怎么解决呢?废话不多说,直接上图: 1.设置—编辑本地.git/config 2.在本地.git/conf ...

  3. CAS单点登录系统入门--分布式登录验证

    1.开源单点登录系统CAS入门 1.1 什么是单点登录 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要 ...

  4. 线性表源码分享(c++),包含顺序表、单链表、循环链表、双向链表

    ---恢复内容开始--- 我是一个c++和数据结构的初学者,本文主要是把清华大学出版社的数据结构(用面向对象方法与c++语言描述)(第2版)这本书中第二章线性表的源码抄下来,在学习的过程中有助于加深印 ...

  5. [多校联考2019(Round 5 T2)]蓝精灵的请求(二分图染色+背包)

    [多校联考2019(Round 5)]蓝精灵的请求(二分图染色+背包) 题面 在山的那边海的那边住着 n 个蓝精灵,这 n 个蓝精灵之间有 m 对好友关系,现在蓝精灵们想要玩一个团队竞技游戏,需要分为 ...

  6. 剑指offer-包含min函数的栈-栈和队列-python

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)).   # -*- coding:utf-8 -*- class Solution: de ...

  7. sublime3跳转函数

    点击Preferences->Browse Packages进入Packages目录,然后打开User目录,查看User目录里面有没有Default (Windows).sublime-mous ...

  8. ASP.net解析JSON

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  9. HTML的条件注释及hack技术

    在很多时候,前端的兼容性问题,都很让人头痛!幸运的是,微软从去年声明:从2016年1月12日起,微软将停止为IE8(包括IE8)提供技术支持和安全更新.整个前端圈子都沸腾起来,和今年七月份Adobe宣 ...

  10. ASP.NET Web API 使用Swagger

    ASP.NET Web API 使用Swagger使用笔记   最近换了工作,其中Webapi这块没有文档,之前有了解过Swagger借此机会好好整理下常用的地方分享给有需要的小伙伴. 概述: 1.s ...