专栏首页毛利学Python爬虫篇| 爬取豆瓣电影(二)

爬虫篇| 爬取豆瓣电影(二)

第一时间送达Python 技术干货!

上次爬取了百度图片,是分析解决ajax的json的响应的,对于一些网站的常见的数据的爬取,是这次主要内容。

明确目标

爬取的是豆瓣电影,并保存到csv格式中

爬取豆瓣是非常的简单,因为没有任何反爬的机制

https://movie.douban.com/explore

分析网站

和上次一样的套路

代码非常的简单

# -*- coding:utf-8 -*-
# time :2019/4/8 13:00
# author: 毛利

import json
import requests

def boudan(name,num,sort):
    with open('douban.csv', 'a+') as f:
        f.write('评分' + ',' + '标题' + ',' + 'url' + ',' + '图片url' + '\n')
        map={
            '1': '&sort=recommend',
            '2':'&sort=time',
            '3':'&sort=rank'
        }

        sorted = map[sort]
        for i in range(int(num)):
            url = 'https://movie.douban.com/j/search_subjects?type=movie&tag='+name+sorted+'&page_limit=20&page_start={}'.format(20*i)
            print('正在爬取:'+url)
            hearders = {
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
            }
            r = requests.get(url,headers = hearders)
            r.encoding = 'utf-8'
            result = json.loads(r.text)
            if result['subjects']:
                    res =  result['subjects']
                    for i in res:
                        rate = i['rate']
                        title = i['title']
                        url = i['url']
                        cover = i['cover']
                        f.write(rate+ ',' + title + ',' + url + ',' +cover + '\n')

if __name__ == '__main__':
    name = input('爬什么电影,在[热门  最新  经典  可播放  豆瓣高分  冷门佳片  华语  欧美  韩国  日本  动作 喜剧  爱情  科幻  悬疑  恐怖  治愈]中选')
    num = input('要爬几页{}电影'.format(name))
    if name == '最新':
        sort = 2
    else:
        sort = input('按照什么排序[1:按热度排序  2:按时间排序 3: 按评价排序] 输入对应的编号')
    boudan(name,num,sort)

总结

  • 如何构造json的url来不断的遍历
  • 保存数据,个人认为不需要使用csv内置的模块

至此爬虫已经入门了,接下来的文章会详细讲解爬虫有关知识并不断提高难度

本文分享自微信公众号 - 毛利学Python(sen13717378202)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 入坑!通过ajaxreturn jquery json提交form

    \Think\Controller类提供了ajaxReturn方法用于AJAX返回数据给客户端(视图、模板、js等)。并且支持JSON、JSONP、XML和EV...

    公众号php_pachong
  • TP用ajaxReturn返回到前端的数据怎么处理?

    问题: (thinkphp)TP用ajaxReturn返回到前端的数据怎么处理? 描述:

    公众号php_pachong
  • 大黄蜂好看吗?用python分析电影观看数据

    大黄蜂,2019-01-04 在大陆上映。观众们很期待。但是期待归期待,是否真的值得去电影院观看还是值得商榷的。本片导演 特拉维斯·奈特 主演:海莉·斯坦菲尔德...

    写PHP的老王
  • Ajax请求($.ajax())中data属性传参数的形式

    实现Ajax提交数据进行请求,其中data属性设置传参的方法有好几种形式,如下: //第一种写法(把参数拼接在URL中,data属性设为空{ })

    公众号php_pachong
  • 如何提高JSON解析的性能

    同一种编程语言之间的数据通信非常简单,因为数据的规范都是相同的,所以输入和输出不需要做任何转换。但是在不同的编程语言之间做数据通信,就比较麻烦了。比如,一种语言...

    拉维
  • 你所不知道的php json编码解码

    json解析在php,或者说在任何编程语言中都非常常见。但是,你是否知道,json解析在php中是以扩展形式存在。

    写PHP的老王
  • Thinkphp ajax

    ThinkPHP 提供了 ajaxReturn 方法用于 Ajax 调用后返回数据给客户端,语法如下:

    公众号php_pachong
  • 【Flutter 专题】50 图解动画小插曲之 Lottie 动画

    和尚在一年前整理过一点 Lottie 在 Android 中的应用,现在 Flutter 也有相关的插件帮助我们快速简单的应用场景复杂的 Lotti...

    阿策
  • 【Flutter 16】图解 ListView 异步加载数据与 Loading 等待

    和尚前两天再学 ListView 时,整理了一下在列表中展示多种不同 item 样式,今天继续深入学习异步请求数据并加载新闻列表以及初始进入页面的 ...

    阿策
  • 自定义一个浮层弹窗视图

    早在2017年年初,我就用七八篇文章的篇幅系统介绍过Objective-C中的CoreAnimation框架。CoreAnimation是iOS中实现动画的框架...

    拉维

扫码关注云+社区

领取腾讯云代金券