Scrapy 入门教程 --爬去ITunes app列表

  1. Scrapy 是什么?

    Scrapy 是一个开源的基于Twisted的python爬虫框架,我们只要定制几个简单的模块就能实现网络数据的爬取。

  2. Scrapy 的整体架构

简单的解释一下上面的图:

爬虫处理的原材料是一个或多个url,爬取时Sheduler会把一个url分配给Downloader来进行一次网络的request请求,请求完成后Downloader再把所得到的response传到Spiders,如果返回的数据是我们需要的,数据就会被处理成相应的Item交给ItemPipeline来进行存储等处理。如果返回的仍然是要处理的url,那么就要交由Scheduler就行再一次的处理过程。

3.Scrapy的安装

sudo pip_install scrapy   或 sudo easy_intall scrapy

输入密码安装完成。输用 scrapy 如果没有 command not found 就表示已经安装成功。

4.创建项目

scrapy startproject project_name

如果看到上面的提示,那么我们的项目就创建成功了。切换到项目录下,我们会看到如下的目录结构

appScrapy/

scrapy.cfg 整个项目的配制信息

appScrapy/ 存放所有python定制模块的文件夹

init.py

items.py 保存爬取到的的数据的数据结构

pipelines.py 数据流处理文件,对爬取的数据流进行处理

settings.py 设置文件,在这里设置数据库等

spiders/ 存放我们定制的爬虫

init.py

我们来找全目标,appStore的娱乐排行榜https://itunes.apple.com/cn/genre/ios-yu-le/id6016?mt=8

我们要爬取的数据就是列表中的app名字跟其相应的具体信息的url。

首先我们来定制我们用来保存数据类型的 items.py,打开items.py,境加后的代码如下:

import scrapy
class AppscrapyItem(scrapy.Item):
    # define the fields for your item here like:
    name = scrapy.Field()
    url = scrapy.Field()

简单说明一下,所有item都继承于scrapy.Item,里面的字段都是scrapy.Field()类型,scrapy.Field()可以接收任何数据类型。

现在该定制我们的爬虫了。

在spiders 文件夹下建立一个AppScrapy.py,然后打开添加如下代码

from scrapy.spider import BaseSpider
from appScrapy.items import AppscrapyItem

class AppScrapy(BaseSpider):
    name = ‘app_scrapy‘
    start_urls = ["https://itunes.apple.com/cn/genre/ios-yu-le/id6016?mt=8"]

    def parse(self, response):
        result = []
        lis = response.xpath("//div[@class=‘grid3-column‘]/div")
        for li in lis:
            array = li.xpath("./ul/li")
            for node in array:
                item = AppscrapyItem()
                item["name"] = node.xpath("./a/text()").extract()
                item["url"] = node.xpath("./a/@href").extract()
                result.append(item)
        return result

所有爬虫类都需要继承自 BaseSpider,并且必须定义一个name,因为启动爬虫时我们要靠这个名字来启动。一个url的数组,必须的这个爬虫才能知道自己应该去哪,最后必须实现parse方法,在这里对爬回来的数据真行筛选得到我们想要的。

当我们启动这个爬虫时 (scrapy crawl app_scrapy),scrapy会从start_urls中取出第一条url,并且用这个url发起一个request,并且把parse作为该request的回调函数,在回调函数中的response就是该request请求后得到的响应。

对于内容的选取我们用xpath方法,xpath方法中要求输入一个路径返回一个selector数组。

对于路径我们可以使用Chrome的开发者工具得到,如上图所示。 我们想要获取内容时,只要在Element选项卡下选中内容,然后右键选择 copy xPath

lis = response.xpath("//div[@class=‘grid3-column‘]/div")

首先我们利用xpath获得 class = ‘grid3-column’的div 中所有的div,返回的值一个数组。从上面的图片中我们可以看数组中应该是3个表示div 的selector.

每个div中的内容如上图所示。我们取出每一个div对其内容再解析。

              for li in lis:
            array = li.xpath("./ul/li")
            for node in array:
                item = AppscrapyItem()
                item["name"] = node.xpath("./a/text()").extract()
                item["url"] = node.xpath("./a/@href").extract()
                result.append(item)

首先用for 循环取出每一个div,然后在当前的div下获取所有的ul下的所有li,所上图所示,我们会得到一个表示li的selector数组。我们再看一下li的结构

中间的文字我们通过text()来获得,所以当前li的文字路径为”./a/text()” “.”表示当前的selector开始。如果这样返回,xpath返回的是一个selector.我们想要获取其真正的值还需要调用extract(),这样就会返回一个其真实字面值的数组。

要想获取字段的属性值,需要使用 @,如上面的@href,然后把这些值赋给我们写好的item就ok了。

数据当然要把保存了,未完待续,下次写怎么保存到数据库。

时间: 2024-08-25 04:48:29

Scrapy 入门教程 --爬去ITunes app列表的相关文章

Scrapy入门教程

在这篇入门教程中,我们假定你已经安装了Scrapy.如果你还没有安装,那么请参考安装指南. 我们将使用开放目录项目(dmoz)作为抓取的例子. 这篇入门教程将引导你完成如下任务: 创建一个新的Scrapy项目 定义提取的Item 写一个Spider用来爬行站点,并提取Items 写一个Item Pipeline用来存储提取出的Items Scrapy是由Python编写的.如果你是Python新手,你也许希望从了解Python开始,以期最好的使用Scrapy.如果你对其它编程语言熟悉,想快速的学

python之scrapy入门教程

看这篇文章的人,我假设你们都已经学会了python(派森),然后下面的知识都是python的扩展(框架). 在这篇入门教程中,我们假定你已经安装了Scrapy.如果你还没有安装,那么请参考安装指南. 我们将使用开放目录项目(dmoz)作为抓取的例子. 这篇入门教程将引导你完成如下任务: 创建一个新的Scrapy项目 定义提取的Item 写一个Spider用来爬行站点,并提取Items 写一个Item Pipeline用来存储提取出的Items Scrapy是由Python编写的.如果你是Pyth

Scrapy 入门教程

Scrapy 是用 Python 实现的一个为了爬取网站数据.提取结构性数据而编写的应用框架. Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 通常我们可以很简单的通过 Scrapy 框架实现一个爬虫,抓取指定网站的内容或图片. Scrapy架构图(绿线是数据流向) Scrapy Engine(引擎): 负责Spider.ItemPipeline.Downloader.Scheduler中间的通讯,信号.数据传递等. Scheduler(调度器): 它负责接受引擎发

Scrapy入门教程之写入数据库

接着之前的文章http://blog.csdn.net/androidworkor/article/details/51176387 来说说如何把抓到的数据写入数据库. 1. 编写爬虫脚本 还是以爬糗事百科为例,编写脚本,保存在 Hello/spiders 目录下的 spider_qiushibaike.py 文件中 # -*- coding: utf-8 -*- import scrapy from Hello.items import HelloItem class Spider_qiush

Angular2入门教程-2 实现TodoList App

最近在学习<Angular从零到一>(机械工业出版社) 遇到一些问题,书中讲的不明白,在网上找了一些,资源很多,也有很多前人的经验 https://blog.csdn.net/ztguang/article/details/53082997 原文:http://codin.im/2016/09/15/angular2-tutorial-2-todolist-app/ 原文地址:https://www.cnblogs.com/1906859953Lucas/p/9784847.html

Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)

Scrapy在window上的安装教程见下面的链接:Scrapy安装教程 上述安装教程已实践,可行.本来打算在ubuntu上安装Scrapy的,但是Ubuntu 磁盘空间太少了,还没扩展磁盘空间,暂时不想再上面装太多软件. Scrapy的入门教程见下面链接:Scrapy入门教程 上面的入门教程是很基础的,先跟着作者走一遍,要动起来哟,不要只是阅读上面的那篇入门教程,下面我简单总结一下Scrapy爬虫过程: 1.在Item中定义自己要抓取的数据: movie_name就像是字典中的“键”,爬到的数

Scrapy 框架 入门教程

Scrapy入门教程 在本篇教程中,我已经安装好Scrapy 本篇教程中将带您完成下列任务: 创建一个Scrapy项目 定义提取的Item 编写爬取网站的 spider 并提取 Item 编写 Item Pipeline 来存储提取到的Item(即数据) 创建项目 在开始爬取之前,您必须创建一个新的Scrapy项目. 进入您打算存储代码的目录中,运行下列命令: scrapy startproject tutorial tutorial/ scrapy.cfg tutorial/ __init__

【scrapy】学习Scrapy入门

Scrapy介绍 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 所谓网络爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这种说法不够专业,更专业的描述就是,抓取特定网站网页的HTML数据.抓取网页的一般方法是,定义一个入口页面,然后一般一个页面会有其他页面的URL,于是从当前页面获取到这些URL加入到爬虫的抓取队列中,然后进入到新页面后再递归的进行上述的操作,其实说来就跟深度遍历或广度遍历一样. Scr

2015年最新Android基础入门教程目录(完结版)

2015年最新Android基础入门教程目录(完结版) 标签(空格分隔): Android基础入门教程 前言: 关于<2015年最新Android基础入门教程目录>终于在今天落下了帷幕,全套教程 共148节已编写完毕,附上目录,关于教程的由来,笔者的情况和自学心得,资源分享 以及一些疑问等可戳:<2015最新Android基础入门教程>完结散花~ 下面是本系列教程的完整目录: 第一章:环境搭建与开发相关(已完结 10/10) Android基础入门教程--1.1 背景相关与系统架构