从imdb爬取ml-100k的电影封面

该博客介绍了如何从imdb网站爬取ml-100k数据集中电影的封面图片。首先,读取所有电影名称,接着通过搜索电影名称获取封面链接,并将这些链接保存到本地文件。使用进程池加速爬取过程,对可能出现的异常进行处理。对于未成功获取封面的电影,提供了备用方案。最后,分享了完整代码的GitHub链接。
摘要由CSDN通过智能技术生成

从imdb爬取ml-100k的电影封面

ml-100k:数据集,只用到了./ml-100k/u.item
result: 电影封面
电影id.jpg,可以用u.item找到id->电影名称对应关系

所用到的库

import pandas as pd    # 读取ml-100k中的文件
from pyquery import PyQuery as pq    # 爬虫库
import requests    # 爬虫库
import logging    # 记录日志
import os    # 判断文件是否存在
import multiprocessing    # 多进程,加速爬取
import shutil  # 最后爬取不到的封面,复制no_found封面

第一步 读取所有电影名称

ml-100k下载,下载不了也没关系,后面GitHub有

def get_movie_names(item_path='./ml-100k/u.item'):
    """获取电影名称./ml-100k/u.item
    Args:
        item_path: ml-100k电影名称数据集
    Return:
        movies_data: ml-100k中[(电影id,名称), ()]
    """
    movies_data = []
    data = pd.read_table(item_path, sep='|', encoding='ISO-8859-1', header=None)
    for idx, row in data.iterrows():
        movies_data.append((row[0], row[1]))
    print(f'get {len(movies_data)} movie name success')
    return movies_data

第二步 获取电影对应的封面链接

先定义一个爬虫接口

def scrape_api(url):
    """爬取网页接口"""
    logging.info(f'scraping {url}')
    try:
        response = requests.get(url)
        if response.status_code == 200:
            return response
        logging.error(f'scraping {url} status code error')
    except requests.RequestException:
        logging.error(f'scraping {url} error')
        return None

先用https://www.imdb.com/find?q=搜索电影名称,然后进入详细电影介绍,找到封面url

def get_movie_png(movie_name):
    """获取每部电影的封面图片的url"""
    # imdb搜索
    search_url = f'https://www.imdb.com/find?q={movie_name}'
    response = scrape_api(search_url)
    if response is None:
        return None
    doc = pq(response.text)
    href = doc('.findList tr td a').<
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值