通过爬取美剧天堂并详细介绍Scrapy 框架

前言(了解)

全文写了很多注释在标题处,时间充裕的可以详细看,需要找主要知识点的我已经标注明白了,直接翻到具体位置就行。

Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。

Scrapy框架:用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常方便。

Scrapy 使用了Twisted多线程异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。

首先介绍Scrapy架构图 (重点:必须熟记于心!)

先介绍Scrapy组件以及他们的含义:

Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。Scheduler(调度器): 它负责接受`引擎`发送过来的Request请求,并按照一定的方式进行整理排列,入队,当`引擎`需要时,交还给`引擎`。Downloader(下载器):负责下载`Scrapy Engine(引擎)`发送的所有Requests请求,并将其获取到的Responses交还给`Scrapy Engine(引擎)`,由`引擎`交给`Spider`来处理,Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给`引擎`,再次进入`Scheduler(调度器)`,Item Pipeline(管道):它负责处理`Spider`中获取到的Item,并进行后期处理(详细分析、过滤、存储等)的地方.Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作`引擎`和`Spider`中间`通信`的功能组件(比如进入`Spider`的Responses和从`Spider`出去的Requests)

安装Scrapy(安装好的此次可跳过)

Scrapy的安装介绍
Scrapy框架官方网址:http://doc.scrapy.org/en/latest
Scrapy中文维护站点:http://scrapy-chs.readthedocs.io/zh_CN/latest/index.html

安装方式:
pip install scrapy -i https://pypi.douban.com/simple

‘’’
如果安装出现错误,可以按照下面的顺序先安装依赖包:
1、安装wheel
pip install wheel
2、安装lxml
pip install lxml
3、安装pyopenssl
pip install pyopenssl
4、安装Twisted
需要我们自己下载Twisted,然后安装。这里有Python的各种依赖包。选择适合自己Python以及系统的Twisted版本:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
# 3.6版本(cp后是python版本)
pip install Twisted-18.9.0-cp36-cp36m-win_amd64.whl
5、安装pywin32
pip install pywin32
6、安装scrapy
pip install scrapy

安装后,只要在命令终端输入scrapy来检测是否安装成功

进入正题: 使用Scrapy

使用爬虫可以遵循以下步骤(了解):

  1. 创建一个Scrapy项目
  2. 定义提取的Item
  3. 编写爬取网站的 spider 并提取 Item
  4. 编写 Item Pipeline 来存储提取到的Item(即数据)

1. 新建项目(scrapy startproject)

创建一个新的Scrapy项目来爬取 https://www.meijutt.tv/new100.html 中的数据,使用以下命令(在Terminal命令窗口执行):
scrapy startproject meiju
创建爬虫程序(在Terminal命令窗口执行)
cd meiju
scrapy genspider meijuSpider meijutt.tv其中:meijuSpider为爬虫文件名meijutt.com为爬取网址的域名

创建Scrapy工程后, 会自动创建多个文件,下面来简单介绍一下各个主要文件的作用(了解):

scrapy.cfg:项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)
items.py:设置数据存储模板,用于结构化数据,如:Django的Model
pipelines:数据处理行为,如:一般结构化的数据持久化
settings.py:配置文件,如:递归的层数、并发数,延迟下载等
spiders:爬虫目录,如:创建文件,编写爬虫规则注意:一般创建爬虫文件时,以网站域名命名

2. 定义Item

​ Item是保存爬取到的数据的容器;其使用方法和python字典类似,虽然我们可以在Scrapy中直接使用dict,但是 Item提供了额外保护机制来避免拼写错误导致的未定义字段错误;

​ 类似ORM中的Model定义字段,我们可以通过scrapy.Item 类来定义要爬取的字段。

import scrapyclass MeijuItem(scrapy.Item):name = scrapy.Field()

3. 编写爬虫

# -*- coding: utf-8 -*-
import scrapy
from lxml import etree
from meiju.items import MeijuItemclass MeijuspiderSpider(scrapy.Spider):# 爬虫名name = 'meijuSpider'# 被允许的域名allowed_domains = ['meijutt.tv']# 起始爬取的urlstart_urls = ['http://www.meijutt.tv/new100.html']# 数据处理def parse(self, response):# response响应对象# xpathmytree = etree.HTML(response.text)movie_list = mytree.xpath('//ul[@class="top-list  fn-clear"]/li')for movie in movie_list:name = movie.xpath('./h5/a/text()')# 创建item(类字典对象)item = MeijuItem()item['name'] = nameyield item
启用一个Item Pipeline组件(易忽略)

为了启用Item Pipeline组件,必须将它的类添加到 settings.py文件ITEM_PIPELINES 配置修改settings.py,并设置优先级,分配给每个类的整型值,确定了他们运行的顺序,item按数字从低到高的顺序,通过pipeline,通常将这些数字定义在0-1000范围内(0-1000随意设置,数值越低,组件的优先级越高)

ITEM_PIPELINES = {'meiju.pipelines.MeijuPipeline': 300,
}
ROBOTSTXT_OBEY = False

4. 编写 Pipeline 来存储提取到的Item(即数据)

class SomethingPipeline(object):def __init__(self):    # 可选实现,做参数初始化等def process_item(self, item, spider):# item (Item 对象) – 被爬取的item# spider (Spider 对象) – 爬取该item的spider# 这个方法必须实现,每个item pipeline组件都需要调用该方法,# 这个方法必须返回一个 Item 对象,被丢弃的item将不会被之后的pipeline组件所处理。return itemdef open_spider(self, spider):# spider (Spider 对象) – 被开启的spider# 可选实现,当spider被开启时,这个方法被调用。def close_spider(self, spider):# spider (Spider 对象) – 被关闭的spider# 可选实现,当spider被关闭时,这个方法被调用
运行爬虫(在Terminal命令窗口执行):

以下执行语句二选一:

# 有日志信息模式的执行方式
scrapy crawl meijuSpider# 无日志信息模式的执行方式
scrapy crawl meijuSpider --nolog

通过爬取美剧天堂详细介绍Scrapy 框架入门相关推荐

  1. SpringBoot集成jsoup多线程爬取美剧天堂全部电影资源

    SpringBoot集成jsoup爬取美剧天堂全部美剧资源 准备工作 这次我的目的是获取这个网站的所有美剧的信息和迅雷的BT地址,我们需要获取的信息都在上万个类似于下面个页面结构的页面上 确定了目标, ...

  2. Scrapy入门实例_爬取美剧天堂的最新前100

    使用工具:Python3.6版本 Python官网:https://www.python.org/ 目录 Scrapy的安装 Scrapy爬取数据步骤 一.创建工程: 二.创建爬虫程序 三.编辑爬虫 ...

  3. Python爬虫爬取美剧网站

    一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打发一下时间.之前是能在视频网站上面在线看的,可是自从广电总局的限制令之后,进口的美剧英剧等貌似就不在像以前一样同步更新了. 但是,作为一个宅dia ...

  4. Python爬虫带你爬取美剧网站

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云,作者:哲洛不闹 一直有爱看美剧的习惯,一方面锻炼一下英语听力 ...

  5. python爬虫实战:爬取美剧网站

    一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打发一下时间.之前是能在视频网站上面在线看的,可是自从广电总局的限制令之后,进口的美剧英剧等貌似就不在像以前一样同步更新了.但是,作为一个宅diao ...

  6. Python爬取 美剧《纸牌屋》字幕(可可英语)---BeautifulSoup版

    爬虫还是不会写,所以借鉴一个,仔细分析分析:https://blog.csdn.net/only_anan/article/details/80082316 1,导入爬取要用到的库,主要是是Beaut ...

  7. 【Python课程作业】食物数据的爬取及分析(详细介绍及分析)

    食物数据爬取及分析 项目概述 网页爬取 食物类别 表头设置 食物数据爬取保存 运行结果 数据分析 CSV文件读取 总体描述 分类分析 特定食物分析 运行结果 项目资源 项目概述 日常生活中我们食用的各 ...

  8. python3 --小爬虫(爬取美剧字幕)

    # !bin/usr/env python3 # coding=utf-8 import re import urllib.request from bs4 import BeautifulSoup' ...

  9. Python爬取B站弹幕方法介绍

    Python爬取B站弹幕方法介绍 文章目录 Python爬取B站弹幕方法介绍 前言 寻找弹幕数据 编写爬虫 B站弹幕数量 新技术介绍 参考文章 前言 最近同学要做东西,需要用 B 站的视频对应的弹幕数 ...

最新文章

  1. python流程控制:while循环
  2. 有状态会话Bean(SLSB)和无状态会话Bean(SFSB)的区别
  3. python能做软件开发吗-学习Python软件开发能做什么?
  4. epoll使用详解(精髓)
  5. c++学习笔记之析构函数
  6. linux 本地yum 恢复,Linux_RHEL系统恢复安装光盘中的yum更新源的方法,安装光盘本地YUM更新源挂载安 - phpStudy...
  7. Java 判断是否为汉字 判断是否为乱码 判断字符串是否为双整型数字 整数 数字...
  8. 物联网的十大基本功能和形态四种
  9. C++---布隆过滤器
  10. java recv failed,java.sql.SQLException: I/O Error: Software caused connection abort: recv failed
  11. 2017年数学建模美赛个人国际一等奖论文
  12. 一文彻底看懂Base64原理(并使用java实现)
  13. MAC jd-gui 安装
  14. 【Three.js】十二、three.js摄像机控件
  15. 软件测试入门知识,Linux系统基础教程——带你玩转Linux(五)
  16. Quantile g-computation的介绍及R实现
  17. java输入十个,键盘输入十个数,输出最大数
  18. 获取处于选中状态的checkbox的id值
  19. 在Photoshop中设计Web 2.0标签/徽章
  20. 安装NVIDIA驱动与CUDA教程(+cuDNN)(终极版)

热门文章

  1. xv6-lab3-pgtbl
  2. cocos2dx——戏如人生
  3. ubuntu安装oracle
  4. 25天能过教资吗?逢考必过锦鲤贴
  5. 重学音视频?认识 MP4 视频(上)
  6. k8s-----(| 三 |)存储Volume卷,PV / PVC,nfs持久化
  7. CPS推广实例(随时更新补充)
  8. 教你将视频压缩变小的操作方法
  9. python基于海康设备SDK的二次开发(三)
  10. tableView 的使用步骤和方法