初探scrapy,发现很多入门教程对应的网址都失效或者改变布局了,走了很多弯路。于是自己摸索做一个笔记。

环境是win10 python3.6(anaconda)。

安装

pip install scrapy

由于是第一次尝试,这次爬取美剧天堂(http://www.meijutt.com/)以下模块的剧名:

1.创建工程

scrapy startproject movie

2.编辑items.py,设置数据存储模版

# -*- coding: utf-8 -*-

# Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.html import scrapy class MovieItem(scrapy.Item):
# define the fields for your item here like:
name = scrapy.Field()

3.查看网页源代码,在spiders目录下创建爬虫文件meiju.py,如下:

# -*- coding: utf-8 -*-
import scrapy
from movie.items import MovieItem class MeijuSpider(scrapy.Spider):
name = "meiju"
allowed_domains = ["meijutt.com"]
start_urls = ['http://meijutt.com/'] def parse(self, response):
movies=response.xpath('//div[@class="c1_l_wap_contact"]/ul/li')
for each_movie in movies:
item=MovieItem()
item['name']=each_movie.xpath('./a/@title').extract()[0]
yield item

在parse函数中取文档中(//为选择匹配的节点,不考虑位置;/为选择根目录下的节点)属性为c1_l_wap_condact的div标签下的ul标签中的li标签。对每个元素选取a标签中的title属性。返回list格式,取第一个元素。(xpath语法参见 http://www.w3school.com.cn/xpath/xpath_syntax.asp)

yield函数的作用:“函数中使用yield,可以使函数变成生成器。一个函数如果是生成一个数组,就必须把数据存储在内存中,如果使用生成器,则在调用的时候才生成数据,可以节省内存。 ”

4.settings.py中增加以下内容,激活item pipeline组件:

ITEM_PIPELINES = {'movie.pipelines.MoviePipeline':100}

这里的整数值决定pipelines运行的先后顺序,小的先运行,大的后运行。整数值通常设置在0-1000之间。

为了避免莫名奇妙的报错,暂时设置ROBOTSTXT_OBEY = False。以后会尽量遵守君子协定吧。。

5.编辑pipelines.py

# -*- coding: utf-8 -*-

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html class MoviePipeline(object):
def process_item(self, item, spider):
with open("my_meiju.txt",'ab+') as fp:
fp.write(item['name'].encode('utf-8')+'\n'.encode('utf-8'))
return item

为了写入中文并且每次写入新的一行而不要覆盖,使用'ab+'。'\n'也要转为utf8格式。

6.执行爬虫(在movie目录下)

scrapy crawl meiju

生成的txt文件会出现在目录下了。内容如下:

抵押第一季
沉默的天使第一季
此时此刻第一季
黑道无边第一季
芝加哥故事第一季
相对宇宙第一季
不列颠尼亚第一季
一起单身第一季

今天先探秘到这里~

scrapy学习笔记(1)的更多相关文章

  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学习笔记(5)-CrawlSpider+sqlalchemy实战

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

  5. scrapy 学习笔记2

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

  6. scrapy学习笔记一

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

  7. Scrapy 学习笔记(一)数据提取

    Scrapy 中常用的数据提取方式有三种:Css 选择器.XPath.正则表达式. Css 选择器 Web 中的 Css 选择器,本来是用于实现在特定 DOM 元素上应用花括号内的样式这样一个功能的. ...

  8. scrapy 学习笔记

    1.scrapy 配合 selenium.phantomJS 抓取动态页面, 单纯的selemium 加 Firefox浏览器就可以抓取动态页面了, 但开启窗口太耗资源,而且一般服务器的linux 没 ...

  9. scrapy学习笔记

    1.scrapy用哪条命令行重新编辑已有的项目?cd projectname 2.如何在pycharm中开启scrapy?先在终端创建一个项目(即文件夹),再在pycharm中打开.

随机推荐

  1. 【原创】大叔经验分享(15)spark sql limit实现原理

    之前讨论过hive中limit的实现,详见 https://www.cnblogs.com/barneywill/p/10109217.html下面看spark sql中limit的实现,首先看执行计 ...

  2. MySQL视图,函数,触发器,存储过程

    1. 视图 视图是一个虚拟表,它的本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘出来, ...

  3. idea报错:Invalid bound statement (not found)

    在配置MyBatis接口映射的Mapper.xml时,提示Invalid bound statement (not found)异常,就算是接口和xml名字相同,路径相同也无法找到,在网上找到了几种解 ...

  4. Manjaro为包管理器pacman和yaourt\yay 添加多线程下载

    用轻量级的axle代替了默认的wget来下载升级包. 1. paman添加多线程 编辑pacman.conf文件: vim /etc/pacman.conf 如果有类似xfercommand的话,注释 ...

  5. NOIP2011 D2T3 观光公交 做题笔记

    目录 归纳题目的性质 算法 60分 100分 code 大家来找茬 总结 归纳题目的性质 每一个加速器效果相同(1) 车子等到所有人上车之后才会发车, 这个最早发车时间不由加速器的配比决定(2) 要优 ...

  6. 如果往错误的NEO地址转账会发生什么

    昨天聊天有人用NEO往错误地址转账丢钱了 我的第一反应是这不可能   Neo使用的地址带有验证功能 最下面ARPP-.G6ce这一串是个base58编码 把他解开就是17-.151f7b5f这一串 红 ...

  7. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第5章编程练习9

    #include <iostream>using namespace std;int main(){ int num; cout<<"Enter number of ...

  8. CSS入门介绍(二)CSS选择器

    css选择器 什么是选择器? 选择器是你构造好网页的结构,需要给这些结构赋予样式,这时候就需要用到选择器,利用选择器将元素与样式一一对应:两者的对应关系可以是一对一,一对多,多对一. 选择器的分类: ...

  9. ProjectEuler && Rosecode && Mathmash做题记录

    退役选手打发时间的PE计划 挂在这里主要是dalao们看到有什么想交流的东西可以私聊哦(站内信或邮箱吧) 2017/8/11  PE595 :第一题QAQ 2017/8/12  PE598 2017/ ...

  10. BOM 浏览器对象模型_不超过 4 KB 的 document.cookie 对象

    注意: 客户端储存应该使用 Web storage API 和 IndexedDB,不推荐使用 Cookie document.cookie 对象 是服务器保存在浏览器的一小段文本信息 用于读写当前网 ...