一个Scrapy爬虫实例

一个Scrapy爬虫实例目录Scrapy是啥Scrapy的安装实例:爬取美剧天堂new100:(1)创建工程:(2) 创建爬虫程序(3) 编辑爬虫(4)设置item模板:(5) 设置配置文件(6)设置数据处理脚本:(7)运行爬虫Scrapy是啥scrapy是一个使用python编写的开源网络爬虫框架。这里的框架实际上就是应用程序的骨架,是一个半成品,框架能够保证程序结构风格统一。Scrapy的安装pipinstallScrapy。但在此之前要先安装几个包:在cmd中运行以下语句:(1) pipinstallwh

大家好,又见面了,我是你们的朋友全栈君。

Scrapy是啥

scrapy是一个使用python编写的开源网络爬虫框架。这里的框架实际上就是应用程序的骨架,是一个半成品,框架能够保证程序结构风格统一。

Scrapy的安装

pip install Scrapy。但在此之前要先安装几个包:
在cmd中运行以下语句:
(1) pip install wheel
(2) pip install lxml
(3) pip install twisted
(4) 最后 pip install scrapy
(5) 验证Scrapy框架是否安装成功:
打开python,试试import scrapy 和scrapy.version_info
验证安装
如图看到Scrapy库的版本为2.4.1

实例:爬取美剧天堂new100:

(1)创建工程:

找一个文件夹,打开cmd进入该目录。
输入命令:
Scrapy startproject movie
在这里插入图片描述
这时可以看到该目录下多了一个叫movie的文件夹,而这个文件夹里面还有一个叫movie的文件夹,里面是这样的:
在这里插入图片描述
这样Scrapy项目就成功创建了。

(2) 创建爬虫程序

用cd先进入movie目录,输入命令:
Scrapy genspider meiju meijutt.tv
在这里插入图片描述
该命令创建了一个叫meiju的爬虫
这时查看spiders目录可以看到多了一个meiju.py,就是我们刚创建的爬虫。

(3) 编辑爬虫

用编辑器打开meiju.py
这是我们的目标
这个网站的内容是我们的爬取目标

import scrapy
from movie.items import MovieItem

class MeijuSpider(scrapy.Spider):  # 继承这个类
    name = 'meiju'  #名字
    allowed_domains = ['meijutt.tv']  # 域名
    start_urls = ['https://www.meijutt.tv/new100.html']  # 要补充完整

    def parse(self, response):
        movies = response.xpath('//ul[@class="top-list fn-clear"]/li')  # 看不懂
        for each_movie in movies:
        item = MovieItem()
        item['name'] = each_movie.xpath('./h5/a/@title').extract()[0]
        yield item  # 一种特殊的循环

(4)设置item模板:

在items中输入:

import scrapy


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

(5) 设置配置文件

在settings.py中增加代码:

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

(6)设置数据处理脚本:

在pipelines.py中输入代码:

import json

class MoviePipeline(object):
    def process_item(self, item, spider):
        return item

(7)运行爬虫

在爬虫根目录执行命令:
Scrapy crawl meiju

Emm发现meiju.py有错误,看了一下是由于冒号后面的语句没有缩进。

现在看看那两个xpath选择器的内容:

movies = response.xpath('//ul[@class="top-list fn-clear"]/li')
        # 意思是选中所有的属性class值为"top-list fn-clear"的ul下的li标签内容

在这里插入图片描述

也就是说movies得到的是li标签之间的内容的列表

for each_movie in movies:
            item = MovieItem()
            item['name'] = each_movie.xpath('./h5/a/@title').extract()[0]
            # .表示选取当前节点,也就是对每一项li,其下的h5下的a标签中title的属性值
            yield item  # 一种特殊的循环

修改增加缩进,并修改第一个xpath的内容后再次运行:
在这里插入图片描述

可以看到爬取成功

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153134.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月26日 下午4:46
下一篇 2022年6月26日 下午4:46


相关推荐

  • 基于量化交易回测的金融股票案例基础知识[通俗易懂]

    基于量化交易回测的金融股票案例基础知识[通俗易懂]1量化交易定义量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选出能带来超额收益的多种“大概率”事件以制定策略。它极大的降低了市场波动给投资者情绪带来的影响,避免在市场极度狂热或者悲观的情况下做出非理性的投资决策。2量化交易分类趋势性交易:适合一些主观交易的高手,用技术性指标作为辅助工具在市场中如鱼得水的,但如果只用各种技术指标或指标组合作为核心算法…

    2022年5月8日
    59
  • Docker 自动更新镜像和容器-Watchtower

    Docker 自动更新镜像和容器-WatchtowerDocker 自动更新镜像和容器 Watchtower 我们 Consul 集群已经搭建好了 Dockerapi 服务也部署好了 但是呢 又碰到一个问题 我们每次更新 api 服务 都需要拉取镜像 停止并删除容器 然后再重新运行 这也太麻烦了 我们希望做到镜像推送到私有仓后 api 服务器能自动更新镜像和容器 这里 我们就需要用到 Watchtower 安装 Watchtowergi 地址 https github com containrrr watchtower 镜像 containrrr

    2026年3月19日
    2
  • 浅谈Johnson算法

    浅谈Johnson算法在有向图的处理中 通常会遇到一个非常棘手的问题 那就是遇到负环 许多最短路算法例如 Dij 和 Floyd 都不可以处理负环 包括堆优化的 这个时候我们可以怎样处理呢 通常来说最常见的方法是使用能够处理负环的方法 Bellman Ford 和基于其的 Spfa 但是有人会问 可不可以不用这些呢 有 那就是 Johnson

    2026年3月17日
    2
  • java中double和float区别

    java中double和float区别float 占 4 个字节 double 占 8 个字节 double 和 float 的区别是 double 精度高 有效数字 16 位 float 精度 7 位 可提供 7 位或 8 位有效数字 构成包括符号位 指数位和尾数位 但 double 消耗内存是 float 的两倍 double 的运算速度比 float 慢得多 能用单精度时不要用双精度

    2026年3月18日
    3
  • java之数组和链表的区别「建议收藏」

    java之数组和链表的区别「建议收藏」数组是有下标索引和data两部分组成链表是有data和指向下一个数据的指针地址两部分组成数组的特点 在内存中,数组是一块连续的区域。拿上面的看电影来说,这几个人在电影院必须坐在一起。 数组需要预留空间,在使用前要先申请占内存的大小,可能会浪费内存空间。比如看电影时,为了保证10个人能坐在一起,必须提前订好10个连续的位置。这样的好处就是能保证10个人可以在一起。但是这样的缺…

    2022年6月25日
    27
  • ducter运维平台_开源自动运维管理平台_自动化运维平台 开源「建议收藏」

    ducter运维平台_开源自动运维管理平台_自动化运维平台 开源「建议收藏」专访运维管理开源平台负责人刁文波:Ducter能550×364-47KB-JPEG专访运维管理开源平台负责人刁文波:Ducter能550×381-45KB-JPEG光宇游戏黄振:开源运维自动化平台架构实现与846×474-35KB-JPEGCheungSSH国产自动化运维工具开源Web界面811×525-89KB-PNGCheungSSH国产自动化运维工具开源Web…

    2022年5月17日
    77

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号