python3.6爬虫之豆瓣电影Top200详解(三)

目标:抓取豆瓣电影的导演、评分、电影名、url并保存于本地excel。

我们采用:requests(获取)——json——pandas(储存)

废话不多说,先上结果与代码:

# -*- coding: utf-8 -*-

import requests

import json

import pandasas pd

#1:把所有url放入urls这个列表里。2:用for循环实现翻页

urls= ['https://movie.douban.com/j/new_search_subjects?sort=S&range=0,' \

'10&tags=%E7%94%B5%E5%BD%B1&start={}'.format(i*20) for iin range(0,10)]

comments= []   #创建一容器来放爬去的内容

for url in urls:

    r= requests.get(url).json()   #获取json文件

    jsons= r['data']              #获取data键中的数据

    for it in jsons:

        author= it['directors']   #获取导演

        # if['directors']中值为空,则author = it['casts']

        if author==None:

            print('none')

        else:

            author= it['casts']

        rate= it['rate']

        title= it['title']

        url= it['url']

        comments.append({'authors':author,'rates':rate,'titles':title,'urls':url})

df= pd.DataFrame.from_dict(comments)   #定义DataFrame对象并赋给df

df.to_excel('D://db_dy.xlsx')          #把结果输出为excel,存在D盘

前言:

①:了解网页的两种加载方法

同步加载:改变网址上的某些参数会导致网页发生改变,例如:www.itjuzi.com/company?page=1(改变page=后面的数字,网页会发生改变)

异步加载:改变网址上的参数不会使网页发生改变,例如https://movie.douban.com/tag/#/(翻页后网址不会发生变化)

②:判断是何种加载方法

 把JavaScript由“允许”改为“阻止”,重新刷新页面,若网页正常加载,说明该网页的加载方式是同步加载,若网页没有正常加载,说明该网页的加载方式是异步加载,如图:

③:网上很多例子大都是抓取top250,因为那网址属于同步加载,很容易抓取(参考第二篇)。

我们这篇top200,属于异步加载,如图:

现重点讲解代码中间部分

一:真实的urls

异步加载中,真实的url并非https://movie.douban.com/tag/#/?sort=S&range=0,10&tags=%E7%94%B5%E5%BD%B1,真正的url需要我们通过抓包获取,流程如图:

所以我们得出真实url:https://movie.douban.com/j/new_search_subjects?sort=S&range=0,10&tags=%E7%94%B5%E5%BD%B1&start=0

通过加载更多,我们发现url中start随之同步变化,变化的间隔为20,即start=0(第一页),start=20(第二页),以此类推,所以我们得出.format(i*20),大家可以对比第二篇的翻页。

二:comments

我们抓取了img、name、text需要有序的排列,即采用append函数,依次把他们放入comments。

三:json

之前我们用得.text是需要网页返回文本的信息,而这里返回的是json文件,所以用.json

有些电影的导演与影员是同一个人,所以我们用if...else来判断

取出字典中的值,需要在方括号中指明值对应的键

总结:

1:翻页,就是寻找url中的规律,大家可以对比第二篇的翻页。

2:豆瓣评分最高的居然是 《地球脉动2:奇迹世界》,大家一定要去看看哦

2:建议大家放慢抓取速度哦,运用import time   time.sleep(1)。

下一篇文章,将继续扩大难度,抓取知乎内容,需要运用到请求头(headers):豆瓣就像大门没有上锁,而知乎上了锁,headers就像一把钥匙,这样解释是不是很形象呢。

有不清楚的地方,大家可以留言,点赞,我看到了,会第一时间回复你。

本文同步更新于微信公众号:工科男雷先生。知乎:雷之

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目标:抓取豆瓣小王子读者头像链接、名字与评语,并保存于本地excel。 爬虫的流程:发送请求——获得页面——解析页...
    雷荣斌阅读 669评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • scrapy安装以及简单使用 1.进入终端,输入命令pip install scrapy 安装模块。安装成功后,新...
    happyte阅读 902评论 0 2
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,250评论 4 61
  • #曾艳芬##曾艳芬深宫蜜语# [微风]【连续签到:71天,今日第5名】 [微风]【早安心语:昨天又发起了集资号召活...
    曾艳芬微光站阅读 164评论 0 0