会员登录|免费注册|忘记密码|管理入口 返回主站||保存桌面
Python豆瓣电影爬虫实战(超详解)-----我的机器人女友《阿丽塔》
2024-12-29IP属地 湖北3
题外话

最近打代码闲下来的时候读了一本叫 《群体性孤独》 名字听起来有点鸡汤,但却是一本货真价实的阐述人工智能发展与人类心理学相交合的绝顶好书,也是互联网时代技术影响人际关系的反思之作。作者为TED演讲的常驻嘉宾,麻省理工学院社会学教授,人称技术领域的 [弗洛伊德] ----- 雪莉-克莱尔。 刚好又看了《阿丽塔》,不仅思索未来机器人与人的关系,鄙人文采不精,只能借助书本序言来表达:有一天,我将习惯用文字而非声音,用数据而非抚摸,来传递感情。有一天,我们将依赖技术,超过依赖彼此,这就是真正的“机器人时代”。对于这种所谓的“机器的美好和技术的美好”,我有一种有种的不确定性和恐惧。

Python豆瓣电影爬虫实战(超详解)-----我的机器人女友《阿丽塔》

**------------------正式开始-------------------**

准备工作

  • pycharm2017 (懒于升级)
  • Google chrome 开发者浏览器
  • 500ml 水

爬虫目的

我们需要获取的内容如下,针对每条评论而言

  1. 用户名
  2. 评分(等级)
  3. 评价内容
  4. 评价时间
  5. 每条评论对应的点赞数(有用数)

爬虫数据的抓取只占到整个爬虫工作的 1/3 不到,真正考验技术和需要时间投入的是突破各种反爬机制和学会使用各种非常规技术手段来获取数据 ------佚名
所以这篇博客重点分享一下我个人理解的思路和走的弯路,最后会附上源码。

实战网址 https://movie.douban.com/subject/1652592/comments?status=P

所以我们可以考虑先将整个楼层的源代码提取下来,然后再单独对每一个楼层里面的含有我们需要提取的数据的html标签进行解析(每一层楼的结构又恰好是一样的)。有些人会说为什么不直接进行提取,就是 直接小 ,直接细化到每一个标签呢?答案是这样也可以,但是会有出错的可能。解释起来比较复杂,可以自行其他大神的博客。

需要用到的库
 

个人感觉 lxml 库比 etree 要好用,lxml库的用法可以见我上一篇博客
https://blog.csdn.net/weixin_43329700/article/details/86768422

获取网页源代码
 
 
 
抓大结束

相信大家跟我一样,以前都看过不少高手写的爬虫代码,但对大神们的编写和调试代码的思路却存在不少疑惑,为什么他们就能写出这么好的代码,他们是怎么想出来的,他们要列草稿?感觉博客里面说得都好顺呀,轮到自己实际操作怎么就不行了,他们是怎么将学到的知识点灵活运用拼凑起来的

翻页爬取

这次涉及翻页爬取,跟我前博客的单页爬取多页拼凑的小学生方法相比有了很大改进
建议开三个python文件
旧爬不累:适时给予良好反馈,不要写完一大段代码才去调试。

  1. 先试着根据先抓大再抓小的爬取一层楼的各种信息后保存到csv文件或生成表格循环打印出要爬取的网址(当然这里仅限有规律的网址),定义函数来实现。上述思路放第一个py文件
  2. 因为一般情况下每一层楼的html标签都是一样的,所以单层楼成功以后便可以尝试循环楼层爬取单页的信息,注意,这里建议还是单页。存放于第二个py文件中
  3. 第三个py文件:若翻页爬取时页码太多建议先尝试爬取5页(少量页码)的数据,根据第一点的思路定义一个能够解析单个网页的函数,尝试结合第一点的函数来实现较少页数的循环爬取,因为有的网站如猫眼在翻页爬取到一定的页数的时候会出现报错,以前看过好像是网页设置,时间戳的问题。
  4. 前两点都尝试成功以后就可以试一下多页爬取啦,我这个实战有5000多页(真这么牛逼吗?后文揭晓),因为若前三点都成功的话,复制粘贴也就是几分钟的事情,或者直接在第三个文件那里直接将循环的终点数字改到自己想要的页码规律数
    我爱学英语草稿的英文为:Draft,我这里用D1,D2,D3来表示
D1:爬取单层楼的所有信息
 
 
D2:循环爬取单页(20层楼)
 
 
D3:循环爬取几页
 

要想将上述定义好的两个函数很好的连接在一起,可以放到一个主函数中

 
 
大刀阔斧
 
 

也可改成用csv库的方法,csv库的方法我在这篇博客也有介绍
https://blog.csdn.net/weixin_43329700/article/details/86768422

于是循环爬取单页的草稿就变成

 
 
 
 
 
 

结果分析

因为已经有不少文章是关于爬虫豆瓣,ILDB,猫眼电影等的分析了,还有精美的图片,所以这里就不展示了。

鄙人原本对整天对着电脑的工作和学习比较厌恶,对英语比较有兴趣,接触Python的原因也是比较奇葩:就因为Python这个名字好听,仅此而已没有别的什么说python潮流简单易上手。而爬虫也让我对计算机行业的感情由轻微厌恶 ------> 喜欢。虽然现在还很菜,但是兴趣和态度起来了,接下来就可以用心学习钻研了。所以多多学习还是有好处的,没准能带来学这样东西以外的收获。(英语转Python这个跨度也令我身边不少朋友称奇哈哈)