目录

1.算法原理:

2.程序流程:

3.程序代码:

4.运行结果(部分结果展示):

5.结果分析:


1.算法原理:

(1)利用import命令导入模块或者导入模块中的对象;

①利用requests库获取数据;

②用BeautifulSoup库将网页源代码转换成BeautifulSoup类型,以便于数据的解析和处理;

③用time库进行时间延时,避免访问速度过快被封禁(封禁后会一段时间内无法进行对网址的访问);

(2)利用resquests.get()获取的数据,其中第一个参数为网页链接,第二个参数为请求头Headers,返回的数据类型为字符串类型网页源代码;

(3)利用BeautifuSoup()命令将获取的网页源代码转化为BeautifuSoup对象,第一个参数为要解析的HTML文本,即网页源代码,第二个参数为解析HTML的解析器;

(4)利用CSS选择器,找到我们所需要的数据,在CSS选择器中,“#”表示id,“.”表示class;

(5)tag(标签)对象的常用属性/方法

属性/方法 作用
tag.find() 返回符合条件的首个数据
tag.find_all() 返回符合条件的所有数据
tag.text 获取标签的文本内容
tag['属性名'] 获取标签HTML属性的值

例如:

(6)字符串的format格式:<模板字符串>.format(<以逗号分隔的参数>),format()中参数和前面的{}顺序一 一对应例如:

print('我是{},来自{}。'.format('小浪','中国'))

也可以在{}中加入序号,format()括号中类似列表进行读取,序号对应列表的下标,例如:

print('我是{1},来自{0}。'.format('中国','小浪'))

也可以给占位符{}命名,例如:

print('我是{name},来自{country}。'.format(country='中国',name='小浪'))

以上三种都输出:我是小浪,来自中国。

2.程序流程:

(1)利用import导入第三方库requests,time和bs4库中的BeautifulSoup;

(2)创建get_film函数,形参为变量link(用于传入网址,因为每页只有25部电影,爬取250部,每个网页链接末尾的查询字符串会有所不同)

(3)为了应对反爬虫机制,这里修改请求头,将网页中User-Agent字段定义为字典,传入requests.get()命令中,赋值给变量res(当然,也有其他的方法,比如通过别的IP访问网站,具体请自己查看requests的官方文档:https://cn.python-requests.org/zh_CN/latest/);

①: 打开豆瓣电影top250排行版,右击(以搜狗浏览器为例)--->审查元素,点击方块内图标

②:随便点击一个电影名,以《肖申克的救赎》为例,网页加载完毕点击Network标签,里面可能为空的,刷新一下网页就好了。点击Network——>name中第一个标签——>找到Requests Headers标签——>找到User-Agent字段。

(4)将res.text(源代码的字符串格式)传给BeautifulSoup命令,并且用Python内置的解析器html.parser,赋值给变量soup;

(5)利用CSS选择器找到标签为div,class="hd"的所有元素(随便点击一部电影名称,以《肖申克的救赎》为例,观察到的规律为电影链接、电影名分布在标签为:div,class="hd"的标签“a”中),传入soup.select()命令中,赋值给item

(6)遍历item中的所有元素,观察发现链接在标签a中的href属性中,电影名在标签a中第一个标签span的文本中,此时用find命令可以找到第一个符合条件的元素,找到第一个标签其中的文本内容,并输出电影名和电影链接;

(7)观察豆瓣10页的网页链接(每页25个电影,其实就观察几页就可以发现规律):

https://movie.douban.com/top250?start=0&filter=(第一页,从一开始网页打开没有问号后的查询字符串,从其他页跳到第一页就有了,第一页带查询字符串和不带查询字符串打开内容相同)

https://movie.douban.com/top250?start=25&filter=(第二页)

https://movie.douban.com/top250?start=50&filter=(第三页)

通过以上三个网页链接的对比发现,只有start后面的发生了改变,那么就可以利用字符串的format格式,进行创建字符串列表link_all

(8)遍历10页网页,传入之前建立的函数get_film,利用time.sleep()进行延时爬取,防止访问速度过快被对方服务器封禁。

3.程序代码:

import requests
import time
from bs4 import BeautifulSoupdef get_film(link):headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0'}res=requests.get(link,headers=headers)soup=BeautifulSoup(res.text,'html.parser')items=soup.select('div.hd a')for i in items:name=i.find('span').textlink_film=i['href']print('电影名:',name,'网址:',link_film)l='https://movie.douban.com/top250?start={}&filter='
link_all=[l.format(i*25) for i in range(10)]
for i in range(10):get_film(link_all[i])time.sleep(1)

4.运行结果(部分结果展示):

5.结果分析:

程序获取的结果与预期结果相同,在找到电影名的过程中可以使用find和find_all命令,可以不使用CSS选择器,也可以将电影名存到txt文档,或者excel文档中,便于储存。此程序仅演示豆瓣电影名、电影网络链接,其他静态网页也可通过此方法进行爬取。

python爬取豆瓣电影排行前250获取电影名称和网络链接[静态网页]————爬虫实例(1)相关推荐

  1. Python爬虫实战(1) | 爬取豆瓣网排名前250的电影(下)

    在Python爬虫实战(1) | 爬取豆瓣网排名前250的电影(上)中,我们最后爬出来的结果不是很完美,这对于"精益求精.追求完美的"程序猿来说怎么能够甘心 所以,今天,用pyth ...

  2. Python爬虫实战(1) | 爬取豆瓣网排名前250的电影(上)

    今天我们来爬取一下豆瓣网上排名前250的电影. 需求:爬取豆瓣网上排名前250的电影,然后将结果保存至一个记事本里. 开发环境: python3.9 pycharm2021专业版 我们先观察网页,看看 ...

  3. python实战(一)Python爬取猫眼评分排行前100电影及简单数据分析可视化python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化

    python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化 一.抓取数据 需要的库 request库 响应http请求 json库 将文本保存成json形式 pyquery 类似JQ ...

  4. python实战(一)Python爬取猫眼评分排行前100电影及简单数据分析可视化

    python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化 一.抓取数据 需要的库 request库 响应http请求 json库 将文本保存成json形式 pyquery 类似JQ ...

  5. Python爬取豆瓣《哪吒之魔童降世》影评

    这几天朋友圈,微博都被<哪吒之魔童降世>这部电影刷屏了,有人说它是"国漫之光",上映4天,票房已经突破9亿了.口碑上,影片自点映开分以来,口碑连续十天稳居所有在映影片榜 ...

  6. 利用python爬取豆瓣电影top250

    利用python爬取豆瓣电影top250: 注:本内容只是作为个人学习记录 1.业务分析 进入网页https://movie.douban.com/top250 可以看见每部电影都呈现在眼前,点击电影 ...

  7. Python爬取豆瓣电影top250的电影信息

    Python爬取豆瓣电影top250的电影信息 前言 一.简介 二.实例源码展示 小结 前言 相信很多小伙伴在学习网络爬虫时,老师们会举一些实例案例讲解爬虫知识,本文介绍的就是经典爬虫实际案例–爬取豆 ...

  8. 源码大公开!Python爬取豆瓣电影Top250源代码,赶紧收藏!

    哈喽~大家好,我是恰恰.不知道是不是有很多小伙伴跟我一样,很喜欢看电影,尤其是那种别人推荐的豆瓣高分电影,所以学Python就有一个好处,用Python爬取豆瓣电影那是分分钟的事,再也不用因为有些电影 ...

  9. python 爬取豆瓣电影排名

    python 爬取豆瓣电影排名 任务要求 获取豆瓣电影排名前250信息 打包进文件夹 代码展示 代码如下 import requests#导入requests库 import redef GetHtm ...

最新文章

  1. NASA指定首批9名宇航员,参与波音和马斯克商业载人航天
  2. 前端学习(2568):使用高级特性provide和inject
  3. vb 根据pid获取句柄_C++中避免返回指向对象内部的句柄(handles)
  4. 虚拟化VMware ESXi 6.7服务器安装配置详细步骤图文
  5. 对于 Shift-JIS 编码的理解 (win10中 查看 Shift-JIS 编码 コード)
  6. 修改FTP服务器时长,连接ftp服务器的时长怎么设置
  7. 传统量化与ai量化对比_量化AI偏差的风险
  8. 软件园区网络设计之网络详细设计
  9. layer使用心得3
  10. plex插件显示无服务器,Plex插件
  11. 手机号归属地区编码_不懂就问丨手机号码为什么是11位呢?
  12. python爬取笔趣阁小说
  13. 寻找2020java 蓝桥杯
  14. 数列和级数(基本概念)
  15. excel快捷键设置
  16. android夜间切换失败,android夜间模式切换
  17. 浅谈设计模式-依赖倒转(倒置)原则
  18. 谷歌等大型科技公司对你了解多深,你想知道吗?
  19. 串口DCB结构体详解
  20. 【Oracle】角色用户授权等操作

热门文章

  1. 坐标变换学习笔记—代码篇Matlab
  2. 资讯类网站增量式爬虫
  3. 证书服务器,备份,还原
  4. 实验三 迷宫游戏开发
  5. 创建一个Student的类,输出姓名,学号,性别,语文数学英语成绩,并求和,求平均数
  6. Tekla钢结构二次开发 第5节正交梁、螺旋梁以及工作平面
  7. 将二维数据画成三维图形
  8. 计算机科学期刊是a类还是b类,期刊发表a类期刊和b类期刊有什么区别?
  9. Excel使用技巧系列之一,职场办公事半功倍
  10. 苹果a15处理器相当于骁龙多少 苹果a15处理器性能