点击上方“IT共享之家”,进行关注

回复“资料”可获赠Python学习福利

【一、项目背景】

豆瓣电影提供最新的电影介绍及评论包括上映影片的影讯查询及购票服务。可以记录想看、在看和看过的电影电视剧 、顺便打分、写影评。极大地方便了人们的生活。

今天以电视剧(美剧)为例,批量爬取对应的电影,写入csv文档 。用户可以通过评分,更好的选择自己想要的电影。

【二、项目目标】

获取对应的电影名称,评分,详情链接,下载 电影的图片,保存文档。

【三、涉及的库和网站】

1、网址如下:

https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start={}

2、涉及的库:requests、fake_useragent、json、csv

3、软件:PyCharm

【四、项目分析】

1、如何多网页请求?

点击下一页时,每增加一页paged自增加20,用{}代替变换的变量,再用for循环遍历这网址,实现多个网址请求。

2.  如何获取真正请求的地址?

请求数据时,发现页面上并没有对应数据。其实豆瓣网采用javascript动态加载内容,防止采集。

1)F12右键检查,找到Network,左边菜单Name , 找到第五个数据,点击Preview。

2)点开subjects,可以看到 title 就是对应电影名称。rate就是对应评分。通过js解析subjects字典,找到需要的字段。

3.  如何网页访问?

https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=0https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=20https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=40https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=60

当点击下一页时,每增加一页page自增加20,用{}代替变换的变量,再用for循环遍历这网址,实现多个网址请求。

【五、项目实施】

1、我们定义一个class类继承object,然后定义init方法继承self,再定义一个主函数main继承self。导入需要的库和请求网址。

import requests,json
from fake_useragent import UserAgent
import csvclass  Doban(object):def __init__(self):self.url = "https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start={}"def main(self):passif __name__ == '__main__':Siper = Doban()Siper.main()

2、随机产生UserAgent,构造请求头,防止反爬。

 for i in range(1, 50):self.headers = {'User-Agent': ua.random,}

3、发送请求 ,获取响应,页面回调,方便下次请求。

    def get_page(self, url):res = requests.get(url=url, headers=self.headers)html = res.content.decode("utf-8")return html

4、json解析页面数据,获取对应的字典。

    data = json.loads(html)['subjects']# print(data[0])

5、for遍历,获取对应的电影名、 评分、下详情页链接。

      print(name, goblin_herf)html2 = self.get_page(goblin_herf)  # 第二个发生请求parse_html2 = etree.HTML(html2)r = parse_html2.xpath('//div[@class="entry"]/p/text()')

6、创建csv文件进行写入,定义对应的标题头内容,保存数据 。

    # 创建csv文件进行写入csv_file = open('scr.csv', 'a', encoding='gbk')csv_writer = csv.writer(csv_file)# 写入csv标题头内容csv_writerr.writerow(['电影', '评分', "详情页"])#写入数据csv_writer.writerow([id, rate, urll])

7、图片地址进行请求。定义图片名称,保存文档。

    html2 = requests.get(url=urll, headers=self.headers).contentdirname = "./图/" + id + ".jpg"with open(dirname, 'wb') as f:f.write(html2)print("%s 【下载成功!!!!】" % id)

8、调用方法,实现功能。

   html = self.get_page(url)self.parse_page(html)

9、项目优化:

1)设置时间延时。
 time.sleep(1.4)

2)定义一个变量u, for遍历,表示爬取的是第几页。(更清晰可观)。

 u = 0self.u += 1;

【六、效果展示】

1、点击绿色小三角运行输入起始页,终止页(  从0页开始 )。

2、将下载成功信息显示在控制台。

3、保存csv文档。

4、电影图片展示。

【七、总结】

1、不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。

2、本文章就Python爬取豆瓣网,在应用中出现的难点和重点,以及如何防止反爬,做出了相对于的解决方案。

3、希望通过这个项目,能够帮助了解json解析页面的基本流程,字符串是如何拼接,format函数如何运用。

4、本文基于Python网络爬虫,利用爬虫库,实现豆瓣电影及其图片的获取。实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。

5、需要本文源码的小伙伴,请在下方公众号后台回复“豆瓣电影”四个字,即可获取。

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

------------------- End -------------------

往期精彩文章推荐:

  • 一篇文章教会你用Python抓取抖音app热点数据

  • 一篇文章教会你使用Python定时抓取微博评论

  • 手把手教你使用Python抓取QQ音乐数据(第四弹)

一篇文章教会你利用Python网络爬虫实现豆瓣电影采集相关推荐

  1. python网络爬虫_一篇文章教会你利用Python网络爬虫获取穷游攻略

    点击上方"IT共享之家",进行关注 回复"资料"可获赠Python学习福利 [一.项目背景] 穷游网提供原创实用的出境游旅行指南.攻略,旅行社区和问答交流平台, ...

  2. 一篇文章教会你利用Python网络爬虫获取素材图片

    点击上方"IT共享之家",进行关注 回复"资料"可获赠Python学习福利 [一.项目背景] 在素材网想找到合适图片需要一页一页往下翻,现在学会python就可 ...

  3. 一篇文章教会你利用Python网络爬虫获取分类图片

    点击上方"IT共享之家",进行关注 回复"资料"可获赠Python学习福利 [一.项目背景] 博海拾贝是一支互联网从业者在线教育的团队,扎根于中国教育行业以及互 ...

  4. 一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

    [一.项目背景] 相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知道最近电影更新的状态. 今天小编以电影天堂为例,带大家更直观的去看自己喜欢的电影,并且下载下来 ...

  5. python3爬虫有道翻译_一篇文章教会你利用Python网络爬虫获取有道翻译手机版的翻译接口...

    [一.项目背景] 有道翻译作为国内最大的翻译软件之一,用户量巨大.在学习时遇到不会的英语词汇,会第一时间找翻译,有道翻译就是首选.今天教大家如何去获取有道翻译手机版的翻译接口. ![image](ht ...

  6. 利用python从网络上爬取图片_一篇文章教会你利用Python网络爬虫抓取王者荣耀图片...

    点击上方"IT共享之家",进行关注 回复"资料"可获赠Python学习福利 [一.项目背景] 王者荣耀作为当下最火的游戏之一,里面的人物信息更是惟妙惟肖,但受到 ...

  7. 如何用python搜索要用的素材_一篇文章教会你利用Python网络爬虫获取素材图片

    [一.项目背景] 在素材网想找到合适图片需要一页一页往下翻,现在学会python就可以用程序把所有图片保存下来,慢慢挑选合适的图片. [二.项目目标] 1.根据给定的网址获取网页源代码. 2.利用正则 ...

  8. 一篇文章教会你利用Python网络爬虫获取穷游攻略

    [一.项目背景] 穷游网提供原创实用的出境游旅行指南.攻略,旅行社区和问答交流平台,以及智能的旅行规划解决方案,同时提供签证.保险.机票.酒店预订.租车等在线增值服务.穷游"鼓励和帮助中国旅 ...

  9. python爬取素材图片代码_一篇文章教会你利用Python网络爬虫获取素材图片

    [一.项目背景] 在素材网想找到合适图片需要一页一页往下翻,现在学会python就可以用程序把所有图片保存下来,慢慢挑选合适的图片. [二.项目目标] 1.根据给定的网址获取网页源代码. 2.利用正则 ...

最新文章

  1. python只读打开文件_Python 文件只读打开模式是???????????????????????????????????????
  2. 【Qt】QImage加载bmp位图数据
  3. 艾伟_转载:C# Design Patterns (3) - Decorator
  4. 吗咿呀嘿,超分,让照片动起来PaddleGAN
  5. MySQL8.0新特性——默认使用caching_sha2_password作为身份验证插件
  6. SSH免密码登录命令无法生效?直接复制粘贴也可以!
  7. 透过源码看Session
  8. 【MATLAB统计分析与应用100例】案例007:matlab数据的极差归一化变换
  9. NVIDIA TESLA M40
  10. mysql存储引擎 索引优化_MySQL存储引擎,索引及基本优化策略
  11. 让VS2010支持Windows2000
  12. php中怎么引用js变量_理解下 Go 中的引用是怎么回事
  13. 工作杂谈(十五)——谷歌学术搜索网站
  14. apache poi excel word 加密,不用借助其他jxcell.jar包
  15. matlab冲激函数delta,信号与系统matlab实验指导书解决方案.doc
  16. genymotion-安卓模拟器-修改IMEI
  17. TO_DATE()函数?
  18. 电脑C盘满了怎么办?请放心删除这些文件夹
  19. OPC UA - Open62541学习
  20. windows 7 x64 下的 System Call

热门文章

  1. CentOS7 启动网卡报错 failed to start LSB: Bring up/down networking
  2. 你的手机钱包,钱是你的吗
  3. 装修遗憾大全 (看的越早、遗憾越少)
  4. 计算分组数据中的平均值
  5. 深入理解计算机系统_第三章_程序的机器级表示
  6. 如何实现下发手机短信验证码
  7. 结城浩《图解设计模式》笔记
  8. 数据库:JDBC详解
  9. Django admin登录页面验证码(1):普通字符和算术验证码
  10. 虹科方案 | 使用频谱分析仪进行PtP(点对点)天线对准