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

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

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

使用 Scrapy 提供的 cmd 命令

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

设置 settings.py

DOWNLOAD_DELAY = 2
RANDOMIZE_DOWNLOAD_DELAY = True
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'
COOKIES_ENABLED = True FEED_URI = u'file:douban.csv'
FEED_FORMAT = 'csv'
class DoubanMovieItem(Item):
title = Field()
movieInfo = Field()
star = Field()
quote = Field()

主要的爬虫程序:

from scrapy import Request
from scrapy import Selector
from scrapy.spiders import Spider from douban.items import DoubanMovieItem class Douban(Spider):
name = "douban"
start_urls = ["https://movie.douban.com/top250"] url = 'https://movie.douban.com/top250' def parse(self, response):
print("--- 爬取的内容 ---")
print(response.url) item = DoubanMovieItem()
selector = Selector(response)
Movies = selector.xpath("//div[@class='info']")
for eachMovice in Movies:
title = eachMovice.xpath("div[@class='hd']/a/span/text()").extract() fullTitle = ''
for each in title:
fullTitle += each movieInfo = eachMovice.xpath("div[@class='bd']/p/text()").extract()
# 评分,xpath 从的数组下标从 1 开始
star = eachMovice.xpath("div[@class='bd']/div[@class='star']/span[2]/text()").extract()
print(star)
# 一句脍炙人口的话
quote = eachMovice.xpath("div[@class='bd']/div[@class='star']/span[4]/text()").extract()
if (quote):
quote = quote[0]
else:
quote = ''
item['title'] = fullTitle
item['movieInfo'] = ";".join(movieInfo)
item['star'] = star
item['quote'] = quote
yield item
nextLink = selector.xpath("//div[@class='paginator']/span[@class='next']/a/@href").extract() if (nextLink):
nextLink = nextLink[0]
print("下一页", nextLink)
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. HTTP请求状态码为400时的原因

    2019-11-30 出现这个请求无效说明请求没有进入后台服务器里 原因: (1)前端提交的字段名称或者字段类型和后台的实体类不一样 或者前端提交的参数跟后台需要的参数个数不一致,导致无法封装 (2) ...

  2. 多线程18-QueueUserWorkItem

        ));         }         ;             ;             ));             ThreadPool.QueueUserWorkItem(A ...

  3. Python内置函数compile

    英文文档: compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) Compile the source i ...

  4. Mybatis-学习笔记(4)1对1、1对多、多对多

    1.1对1 有2种方式对内嵌Bean设值: 1>关联查询就一条语句.使用association关键字,直接将嵌套对象的映射表的字段赋值内嵌对象. <association property ...

  5. 为何单片机程序不用加载到RAM

    一. STM32程序构成 1.1. STM32的存储空间 1.1.1. RAM 1.1.1.1 单片机的RAM是SRAM. 1.1.1.2. SRAM特点 a.优点,速度快,不必配合内存刷新电路,可提 ...

  6. nodeJS打包安装和问题处理

    一,执行步骤,打包报错 1,查看npm版本npm -v 2,查看gulp版本(报错怎么证明没安装)gulp --version 3,安装gulpnpm install --global gulp-cl ...

  7. [七月挑选]使用hexo建立主题,并发布到github

    title: 使用hexo建立主题,并发布到github 根据hexo官网的概述和hexo官网的建站,搭建最开始的hexo博客. 1.环境预先安装好node.js和git 2.npm安装hexo: $ ...

  8. CABasicAnimation animationWithKeyPath Types

    转自:http://www.cnblogs.com/pengyingh/articles/2379631.html CABasicAnimation animationWithKeyPath 一些规定 ...

  9. 一份贴近真实面试的Java面试题(基础部分)

    这是一份关于Java基础的面试题.在网上的关于Java的面试题数不胜数,但本人认真看过后觉得大多数都没有实用性,有很多是面试官根本就不会问到的,企业根本不会用到的,一些已经脱离了实际开发的技术问题.而 ...

  10. msdn帮助,离线下载

    这是我在msdn下载,如果要看msdn帮助,不是在线看就是visual studio 帮助那下载. 在网速不好的时候msdn看,会让人不爽. 帮助那个下载速度很慢,于是我就去下载离线. 因为微软看不到 ...