爬虫练习------利用scrapy 爬取爱奇艺

本次练习利用scrapy 爬取了爱奇艺爱情电影(小伙伴可以自行修改爬取其他类型电影)
学习到的主要内容是

  • 1.对scrapy 框架中的yield 生成器有了进一步的思考,可以通过它来实现翻页操作
  • 2.关于基础url 的搭建,常用的是format/urlencode/占位符
  • 3.重点:学习到如何在pipline 中进行配置,将爬取的内容存储为excel格式

下面是代码各模块文件的截图位置


文件位置

本次主要的程序在四大模块里

1.主程序----lovemovie.py
2.items.py
3.pipliens.py
4.settings.py

具体代码和需要修改的(settings.py)如下:

1.主程序---lovemovie.py

import scrapy
from scrapy import Spider,Request
from aiqiyi.settings import *
import logging
from logging import getLogger
import json
from urllib.parse import urlencode#可以将参数通过&链接到一起
from aiqiyi.items import *


class LovemovieSpider(Spider):
    name = 'lovemovie'
    allowed_domains = ['list.iqiyi.com']
    start_urls = ['https://list.iqiyi.com/']




    def start_requests(self):
        base_url='https://pcw-api.iqiyi.com/search/video/videolists?'
        for page in range(1, self.settings.get('PAGE') + 1):
            params={
                'access_play_control_platform': '14',
                'channel_id': '1',
                'data_type': '1',
                'from': 'pcw_list',
                'mode': '11',
                'pageNum':page,
                'pageSize': '48',
                'site': 'iqiyi',
                'three_category_id': '6;must',
                'without_qipu': '1'
            }
            url = base_url + urlencode(params)
            yield Request(url,callback=self.parse)#迭代器的作用是可以实现翻页




    def parse(self, response):
        """

        :param response: 迭代的请求
        :return: 所有的解析数据
        """
        result=json.loads(response.text)
        if result.get('data').get('list'):#开始解析
            items=result.get('data').get('list')
            aiqiyifilm_info=AiqiyiItem()#首先实例化item.py 模块
            for item in items:
                aiqiyifilm_info['film_description']=item.get('description')
                aiqiyifilm_info['full_time'] = item.get('duration')
                aiqiyifilm_info['formatperiod'] = item.get('formatPeriod')
                aiqiyifilm_info['film_name'] = item.get('name')
                aiqiyifilm_info['play_url'] = item.get('playUrl')
                aiqiyifilm_info['score'] = item.get('score')
                aiqiyifilm_info['actors'] = item.get('secondInfo')
                yield aiqiyifilm_info#运行后会在terminal 端进行,随后将内容在pipline模块内进行保存

2.itmes.py

import scrapy
from scrapy import Item,Field


class AiqiyiItem(Item):
    film_description=Field()#电影描述
    full_time=Field()#影片时长
    formatperiod=Field()#上映时间
    film_name=Field()#电影名称
    play_url=Field()#播放连接
    score=Field()#分数
    actors=Field()#主演名称

3.pipline.py(process_item 函数名称是固定的,最好不要修改)

from openpyxl import Workbook#注意是大写


class ExcelPipeline(object):
    def __init__(self):
        self.wb=Workbook()#实例化
        self.ws=self.wb.active#激活
        self.ws.append(['故事梗概','电影时长','上映时间','电影名字','播放链接','电影评分','主演名字'])


    def process_item(self,item,spider):#这里的参数spider 实际上是Spider的实例,item就是主程序中的aiqiyifilm_info,模块自动识别为item
        line=[item['film_description'],item['full_time'],item['formatperiod'],item['film_name'],item['play_url'],item['score'],item['actors']]
        self.ws.append(line)
        self.wb.save('aiqiyi_film.xlsx')
        return item #pipline 必须返回迭代对象,或者异常值

4.settings.py


开通管道
爬取爱情电影页数--当时爬取只有19页

本例子还算比较简单,没有反爬,无需验证,后续还会不断练习

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容