目标网站

https://movie.douban.com/explore#!type=movie&tag=%E8%B1%86%E7%93%A3%E9%AB%98%E5%88%86&sort=rank&page_limit=20&page_start=0
(豆瓣电影——选电影——豆瓣高分——按评价排序)

爬虫基本思路

1.首先发送请求并返回requests(最好模拟谷歌浏览器的头部访问(即下面的headers),并且设置一个每次访问的间隔时间,这样就不容易触发网站的反爬机制(说白了就是模拟人类的访问行为))
2.获得requests对象后使用BeautifulSoup (美丽的汤??也不知道为啥要起这个名)来解析requests对象,注意这里要用request.text,就取文本,解析后的soup打印出来其实就是整个html的字符串内容,但是类型并不是string,应该是bs4类型,这就是这个美丽的汤的魅力所在,它可以直接在python用类似于ccs选择器那样的方式一层一层的寻找我们要的div内容。
3.搜寻soup对象中我们需要的内容,就是一层一层div找到对应的属性,然后拿取我们需要的内容。(看html或者把之前的soup对象打印出来)
4.打印或保存文件

在分析过网页之后发现传统的从html中拿前三部电影不太方便,对于json更建议从xhr中的preview获取,这样一看就一目了然了。

至于如何获取xhr中preview的内容,可以用如下方式:
首先看header里的url:

res = requests.get(url, headers=headers,timeout=20) (假设这里我们已经获得了request对象)
首先把res转化为json对象:
js = res.json() #这样才能用键值对的方式访问到我们要的名称和url

全部代码:

import requests
from bs4 import BeautifulSoup
import json
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}
#从xhr中获取链接
url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=%E8%B1%86%E7%93%A3%E9%AB%98%E5%88%86&sort=rank&page_limit=20&page_start=0'
res = requests.get(url, headers=headers,timeout=20)
#print(res.status_code)
js = res.json()  #转化成json才能用键值对访问  response对象不能def topCinema(num):  #获取评分排名前n部电影的名称和链接top_info = js['subjects'][:num]top_cinema = {}for i in range(num):top_cinema[top_info[i]['title']] = top_info[i]['url']return top_cinema
#print(topCinema(4))def getComment(movieUrl,pageNum):  #爬取某个电影的第i页影评start = (pageNum-1) * 20headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}url = movieUrl + 'comments?'+ 'start=' + str(start) + 'limit=20&status=P&sort=new_score'res = requests.get(url, headers=headers,timeout=20)soup = BeautifulSoup(res.text,'html.parser')comment_list = soup.find_all('span',class_='short')user = soup.find_all('span',class_='comment-info')cinema_comment = {}for i in range(len(user)):cinema_comment[user[i].a.string] = comment_list[i].stringreturn cinema_comment
#print(getComment('https://movie.douban.com/subject/1292052/',1))#爬取top3电影的前两页影评:(爬取多页只需要改一下参数即可)
top3 = topCinema(3)
top3_comment = {}
for name in top3:for i in range(1,3):top3_comment[name] = getComment(top3[name],i)
#print(top3_comment)#存储本地
with open ('./comment/top3_comment.txt','w') as f:f.write(str(top3_comment))print('保存成功')f.close()
with open('./comment/top3_comment.txt','r') as r:print(r.read())r.close()

运行结果

python爬虫爬取豆瓣电影评分排行榜前n名的前n页影评相关推荐

  1. python爬虫爬取豆瓣电影排行榜并通过pandas保存到Excel文件当中

    我们的需求是利用python爬虫爬取豆瓣电影排行榜数据,并将数据通过pandas保存到Excel文件当中(步骤详细) 我们用到的第三方库如下所示: import requests import pan ...

  2. Python爬虫 爬取豆瓣电影TOP250

    Python爬虫 爬取豆瓣电影TOP250 最近在b站上学习了一下python的爬虫,实践爬取豆瓣的电影top250,现在对这两天的学习进行一下总结 主要分为三步: 爬取豆瓣top250的网页,并通过 ...

  3. Python爬虫爬取豆瓣电影评论内容,评论时间和评论人

    Python爬虫爬取豆瓣电影评论内容,评论时间和评论人 我们可以看到影评比较长,需要展开才能完整显示.但是在网页源码中是没有显示完整影评的.所以我们考虑到这部分应该是异步加载的方式显示.所以打开网页的 ...

  4. python爬虫爬取豆瓣电影信息城市_Python爬虫入门 | 2 爬取豆瓣电影信息

    这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬 ...

  5. Python爬虫爬取豆瓣电影Top250

    爬虫爬取豆瓣Top250 文章目录 爬虫爬取豆瓣Top250 完整代码 第一步获取整个网页并以html来解析 正则表达式来匹配关键词 所有信息写入列表中 存入Excel中 效果如图 本文学习自B站UP ...

  6. 用Python爬虫爬取豆瓣电影、读书Top250并排序

    更新:已更新豆瓣电影Top250的脚本及网站 概述 经常用豆瓣读书的童鞋应该知道,豆瓣Top250用的是综合排序,除用户评分之外还考虑了很多比如是否畅销.点击量等等,这也就导致了一些近年来评分不高的畅 ...

  7. python爬虫爬取豆瓣电影信息城市_python爬虫,爬取豆瓣电影信息

    hhhhh开心,搞了一整天,查了不少python基础资料,终于完成了第一个最简单的爬虫:爬取了豆瓣top250电影的名字.评分.评分人数以及短评. 代码实现如下:#第一个最简单的爬虫 #爬取了豆瓣to ...

  8. python爬虫爬取豆瓣电影排行榜,并写进csv文件,可视化数据分析

    #1.爬取内容,写进csv文件 import requests import re import csv #豆瓣电影排行榜,写进csv文件 url = "https://movie.doub ...

  9. PYTHON爬虫爬取豆瓣电影的一周口碑电影排行榜

    代码前准备: 1.使用Eclipse进行开发,关于eclipse搭建python的环境见:https://www.cnblogs.com/telwanggs/p/7016803.html 2.使用bs ...

  10. python爬取豆瓣电影top250的代码_Python爬虫——爬取豆瓣电影Top250代码实例

    利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Excel表中 ...

最新文章

  1. python 的文件读写方法:read readline readlines wirte   writelines
  2. Cell Reports:去除宿主和胞外DNA以提高微生物基因组得率(痰液样本)
  3. vue-cli构建项目
  4. (0095)iOS开发之本地文件预览的三种方法(3)
  5. 你是别人眼中的废物产品经理吗?
  6. CODEVS-2018-反病毒软件-线段树
  7. SharePoint Search之(七)Search result- 结果源
  8. BABOK - 开篇:业务分析知识体系介绍
  9. html5jqueryl轮播图,基于JQuery的实现图片轮播效果(焦点图)
  10. Nacos 发布 1.0.0 GA 版本,可大规模投入到生产环境
  11. 分布式实时分析数据库citus数据插入性能优化
  12. securecrt 多窗口运行相同命令
  13. Linux学习笔记:CentOS6关闭IPv6
  14. 数据库, 数据仓库, 数据集市,数据湖,数据中台
  15. ICTCLAS 汉语词性标注集 中科院
  16. Dango 之认证组件Auth模块
  17. 码字 层映射 预编码的概念总结
  18. 通过FinalShell打通ssh隧道
  19. 创业管理实战2021年秋(考试答案)
  20. Spring Cache使用Redis自定义缓存key

热门文章

  1. Mac运行node.js连接oracle数据库报DPI-1047: Cannot locate a 64-bit Oracle Client library: “dlopen(libclntsh.dy
  2. Android发送edp服务器,Android6.0调试笔记之edp屏无法点亮问题怎么解决
  3. 微软证实Windows 10周年更新会重置某些PC设置 请静候补丁
  4. 无线wifi盒子用不用拉网线?
  5. 牛客小白月赛 22 C. 交换游戏
  6. iOS 5 故事板进阶(3)
  7. 智能水杯设计方案_智能水杯方案的结构、理念、特点
  8. win10企业版|激|活|码
  9. 用JS写了一个30分钟倒计时器
  10. 马云给公司年轻员工的一封信