2020-05-25

今天使用scrapy框架对 58921 网站上的数据进行爬取,由于该网站上的电影票房是图片,因此还调用了百度AI接口,具体代码如下:

# -*- coding: utf-8 -*-
import scrapy
import re
import Move.baiduAI as baidu

class MsSpider(scrapy.Spider):
    name = "mS"
    allowed_domains = ["58921.com"]
    start_urls = ['http://58921.com/alltime']

    def parse(self, response):
        tr_list = response.xpath("//div[@class='table-responsive']/table/tbody/tr")
        item = {"move_name": [], "box_office": []}
        i = 0
        for tr in tr_list:
            item["move_name"].append(tr.xpath("./td/a/text()").extract_first())
            image_url = tr.xpath("./td/img/@src").extract_first()
            #调用百度AI接口
            box_office = re.match(r"\d*.\d*", baidu.run(image_url)).group()
            item["box_office"].append(float(box_office))
            print("进度:", i)
            i += 1
        yield item

在 pipeline 文件里边调用了 matplotlib 库,把处理到的数据进行可视化

from matplotlib import pyplot as plt
import matplotlib

font = {
    'family': 'MicroSoft YaHei',
    'weight': 'bold',
    'size': '10'
}

matplotlib.rc("font", **font)

class MovePipeline(object):
    def process_item(self, item, spider):
        plt.figure(figsize=(20, 8), dpi=80)
        plt.barh(range(len(item["move_name"])), item["box_office"], height=0.2)
        plt.yticks(range(len(item["move_name"])), item["move_name"])
        plt.show()
        return item

结果如下:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值