完整代码如下:

import requests
from bs4 import BeautifulSoupfor i in range(10):res = requests.get("https://movie.douban.com/top250?start=" + str(i * 25))  # 发送get请求html = res.text#将获取到的网页信息以字符串的形式存入变量html中soup = BeautifulSoup(html, "html.parser")#用BeautifulSoup将网页信息html解析成人们看得懂的语言,解释器是html.parseritems = soup.find_all("div", class_="item")#提取所有的电影名,序号,链接,推荐语,评分的数据for item in items:dym_0 = item.find("span", class_="title")  # 标签包含电影名dym_1 = dym_0.text  # 去掉标签,提取电影名xh_0 = item.find("em", class_="")# 标签包含序号xh_1 = xh_0.textpf_0 = item.find("span", class_="rating_num")# 标签包含评分pf_1 = pf_0.textprint(xh_1,dym_1, pf_1)#打印序号,电影名,评分tjy_0 = item.find("span",class_ = "inq")# 标签包含推荐语if tjy_0:#打印非空的推荐语,否则报错print(tjy_0.text)lj_0 = item.find("a")print(lj_0['href'] + "\n")#提取lj_0["a"]属性的值。即 将 <a href="网址">中,属性a的值href提取出来并打印。

步骤一:网站分析
进入网页:https://movie.douban.com/top250,如图所示:

第一页只有25个电影,如果想要获取所有的250页的电影,就需要获取总共10页的内容。(重复获取的工作交给for循环
通过单击第二页可以发现网页的地址变成:
https://movie.douban.com/top250?start=25&filter=


第三页地址为:
https://movie.douban.com/top250?start=50&filter=
比较
第二页可以发现网页的地址:
https://movie.douban.com/top250?start=25&filter=
这就很容易理解了,每多一页,就给网页地址的start加25。
通过上述分析发现,可以使用requests获取电影网页的代码,并利用for循环翻页。代码如下:

for i in range(10):res = requests.get("https://movie.douban.com/top250?start=" + str(i * 25))  # 发送get请求html = res.text#将获取到的网页信息以字符串的形式存入变量html中

我们用requests.get()来获取数据,
接着用BeautifulSoup解析数据和提取数据,添加代码如下:

for i in range(10):res = requests.get("https://movie.douban.com/top250?start=" + str(i * 25))  # 发送get请求html = res.text#将获取到的网页信息以字符串的形式存入变量html中soup = BeautifulSoup(html, "html.parser")#用BeautifulSoup将网页信息html解析成人们看得懂的语言,解释器是html.parseritems = soup.find_all("div", class_="item")#提取所有的电影名,序号,链接,推荐语,评分的数据

提取最小父级标签
先右击检查,进入以下界面:

它的标签是

,有一个class属性,其值是info pure-u。我们可以使用find_all()语法,来找到它们。
再右击网页源代码,进入以下界面:

接着你要记住一句话:
标签,里面会有我们想要的信息
接着我们对父级标签,使用find_all()方法来查找所有想要的标签就对了,还要将标签的文本内容提取出来,用 标签名.text的方法提取标签中的文字,再接着打印文字(包括链接),代码如下:
 for item in items:dym_0 = item.find("span", class_="title")  # 标签包含电影名dym_1 = dym_0.text  # 去掉标签,提取电影名xh_0 = item.find("em", class_="")# 标签包含序号xh_1 = xh_0.textpf_0 = item.find("span", class_="rating_num")# 标签包含评分pf_1 = pf_0.textprint(xh_1,dym_1, pf_1)#打印序号,电影名,评分tjy_0 = item.find("span",class_ = "inq")# 标签包含推荐语if tjy_0:#打印非空的推荐语,否则报错print(tjy_0.text)lj_0 = item.find("a")print(lj_0['href'] + "\n")#提取lj_0["a"]属性的值。即 将 <a href="网址">中,属性a的值href提取出来并打印。

多说一句:为什么会有这个语句?注释一下来看看报错:

 if tjy_0:#打印非空的推荐语,否则报错print(tjy_0.text)

因为以下报错:

AttributeError: 'NoneType' object has no attribute 'text'

NoneType是一个都没有类型的文本,即文本为空,不能用 .text的方法。解决方法就是:
对文本进行判断:当我的文本里有内容就打印,否则就不打印。用if语句就可以解决。

结语:多动手,多试错,多入坑,练多了你就熟练掌握了。一起加油!

爬虫实战TOP250电影数据(Requests和BeautifulSoup )相关推荐

  1. 爬虫豆瓣TOP250电影数据

    今天是开通博客的第一天 目的 记录 爬取豆瓣TOP250电影数据 目的 我写博客的目的很简单,主要是想记录一些自己学习python的历程,后期包括一些其他方面的学习,目前在看唐松老师写的<Pyt ...

  2. 爬虫实战——豆瓣电影Top250

    爬虫实战--豆瓣电影Top250 准备阶段 网页分析 在目标网页直接ctrl+u查看网页源代码(或者F12审查),豆瓣的网页源代码就出现了(非常友好): <!DOCTYPE html> & ...

  3. xhr get获取文件流下载文件_python爬虫实战——豆瓣电影get初体验

    影评许可证 公众号[2019]第22期 本栏目由"数据皮皮侠"独家呈献 专场 python爬虫实战--豆瓣电影get初体验 2019.10.28 / 早上7点场 / 免费 本期&q ...

  4. 【网络爬虫入门01】应用Requests和BeautifulSoup联手打造的第一条网络爬虫

    [网络爬虫入门01]应用Requests和BeautifulSoup联手打造的第一条网络爬虫 广东职业技术学院 欧浩源 2017-10-14  1.引言 在数据量爆发式增长的大数据时代,网络与用户的沟 ...

  5. python爬虫实战——猫眼电影案例

    python爬虫实战--猫眼电影案例 ·背景   笔者上一篇文章<基于猫眼票房数据的可视化分析>中爬取了猫眼实时票房数据,用于展示近三年电影票房概况.由于数据中缺少导演/演员/编剧阵容等信 ...

  6. scrapy爬取豆瓣top250电影数据

    scrapy爬取豆瓣top250电影数据 scrapy框架 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. sc ...

  7. Python爬虫实战——获取电影影评

    Python爬虫实战--获取电影影评 前言 第三方库的安装 示例代码 效果演示 结尾 前言 使用Python爬取指定电影的影评, 注意:本文仅用于学习交流,禁止用于盈利或侵权行为. 操作系统:wind ...

  8. python 豆瓣评论分析方法_使用python抓取豆瓣top250电影数据进行分析

    抓取豆瓣Top250电影数据的链接和电影名称 代码如下: import urllib.request as urlrequest from bs4 import BeautifulSoup impor ...

  9. 数据分析与挖掘案例之使用python抓取豆瓣top250电影数据进行分析

    使用python抓取豆瓣top250电影数据进行分析 抓取豆瓣Top250电影数据的链接和电影名称 代码如下: import urllib.request as urlrequest from bs4 ...

最新文章

  1. 使用XML作为配置表,WinForm程序读取配置表来动态显示控件
  2. kubernetes组件
  3. linux常用命令和选项
  4. java classpath设置_Java CLASSPATH设置
  5. 高颜值可定制在线绘图工具
  6. 码元、波特、速率、带宽
  7. 流API--流的映射
  8. JSON与MAP之间的转换
  9. 像素测量工具_结构光视觉传感器的标定方式和测量原理
  10. bin mysql u root_MySQL安装后续步骤(修改root密码)
  11. 计算机在剪辑方面的应用,多媒体技术对影视后期制作的应用
  12. Wifi密码破解(rtl8818linux驱动安装)
  13. 中国移动科普:为什么手机移动网络要叫 “蜂窝移动网络”
  14. 【MySQL基础】03:约束与运算符
  15. 牛客练习赛53.老瞎眼 pk 小鲜肉(线段树思维)
  16. Power BI Desktop 微软官方入门教程
  17. 奥林匹克计算机竞赛保送,电脑奥赛中最寂寥的竞赛 5学生夺牌直通清华
  18. 常用计算机辅助审计技术,常用的计算机辅助审计技术
  19. C++ 之学习大纲网址:文档:C++ knowledge.note 链接:http://note.youdao.com/noteshare?id=c786848810ceb817ae61b76c6bf
  20. 路漫漫远修兮-centos7 oracle 11g 静默安装教程

热门文章

  1. IDEA 编写 SpringBoot 项目自动编译刷新
  2. IDEA创建WEB项目卡死
  3. u盘工作表在计算机上打不开,做完Excel表格保存在U盘中拿到另外一台电脑上使用打不开的解决方法...
  4. 物理机做Raid5,安装Centos7.9系统,配置网络
  5. [bsoj2947] 失落天使
  6. 密码学上的commitment
  7. 高考志愿填报,专业测评科学报考
  8. 机器学习入门——Python神经网络编程②
  9. python抢票12306源码_Python实现12306火车票抢票系统
  10. linux 硬盘活动时间,硬盘活动分区(将磁盘分区标为活动或取消活动的方法)