Scrapy 爬取七麦 app数据排行榜

本文介绍了如何使用Scrapy爬取七麦数据iOS付费应用排行榜的前100名应用,包括app的下标、图标、名称、类型、排行、开发者和详情。遇到的挑战包括遵守robots.txt、动态渲染、分页问题,解决方案涉及Selenium、动态加载和JS脚本的使用。
摘要由CSDN通过智能技术生成

前言

熟悉Scrapy之后,本篇文章带大家爬取七麦数据(https://www.qimai.cn/rank )的ios appstore付费应用排行榜前100名应用。

爬取内容包括app在列表中的下标,app图标地址,app的名称信息,app的类型,在分类中的排行,开发者,详情等。

考虑的问题:

  • Forbidden by robots.txt的错误
  • 网页返回403
  • 页面通过动态渲染,普通的请求url,在页面渲染之前已经返回response,解析没有数据
  • 列表一页20个app,想要拿到前100个需要翻页,但是翻页没有更改url,而是通过js动态加载

1563269958.jpg

创建项目

在需要放置项目的目录下,

> scrapy startproject qimairank

回车即可创建默认的Scrapy项目架构。

1563271101.jpg

创建Item

创建Item来存储我们爬取的app在列表中的下标,app图标地址,app的名称信息,app的类型,在分类中的排行,开发者,详情。
修改items.py,在下面增加

class RankItem(scrapy.Item):
    # 下标
    index = scrapy.Field()
    # 图标地址
    src = scrapy.Field()
    # app标题信息
    title = scrapy.Field()
    # app类型
    type = scrapy.Field()
    # 分类中的排行
    type_rank = scrapy.Field()
    # 开发者
    company = scrapy.Field()
    # 详情信息
    info = scrapy.Field()

创建Spider

spiders目录下创建RankSpider.py,并创建class RankSpider,继承于scrapy.Spider。

import scrapy

class RankSpider(scrapy.Spider):
    name = "RankSpider"
    start_urls = ["https://www.qimai.cn/rank"]

    def parse(self, response):
       pass
  • name:用于区别Spider,该名字必须是唯一的。
  • start_urls:Spider在启动时进行爬取的url列表,首先会爬取第一个。
  • def parse(self, response):得到url的response信息后的解析方法。

解析付费榜

解析用的Selectors选择器有多种方法:

  • xpath(): 传入xpath表达式,返回该表达式所对应的所有节点的selector list列表 。
  • css(): 传入CSS表达式,返回该表达式所对应的所有节点的selector list列表.
  • extract(): 序列化该节点为unicode字符串并返回list。
  • re(): 根据传入的正则表达式对数据进行提取,返回unicode字符串list列表。

下面我们用xpath()选择节点,xpath的语法可参考w3c的http://www.w3school.com.cn/xpath/xpath_nodes.asp 学习,需要熟悉语法、运算符、函数等。

def parse(self, response):
    base = response.xpath(
        "//div[@class='ivu-row rank-all-item']/div[@class='ivu-col ivu-col-span-8'][2]//ul/li[@class='child-item']/div[@class='ivu-row']")
    for box in base:
        # 创建实例
        rankItem = RankItem()
        # 下标
        rankItem['index'] = \
            box.xpath(".//div[@class='ivu-col ivu-col-span-3 left-item']/span/text()").extract()[0]
        # 图标地址
        rankItem['src'] = box.xpath(".//img/@src").extract()[0]
        # app名称信息
        rankItem['title'] = box.xpath(".//div[@class='info-content']//a/text()").extract()[0]
        # app类型
        rankItem['type'] = box.xpath(".//div[@class='info-content']//p[@class='small-txt']/text()").extract(
  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值