网易首页 > 网易号 > 正文 申请入驻

Python爬虫入门 | 2 爬取豆瓣电影信息

0
分享至

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

好啦,正式开始我们的第二节课《爬取豆瓣电影信息》吧!啦啦哩啦啦,都看黑板~

1. 爬虫原理

1.1 爬虫基本原理

听了那么多的爬虫,到底什么是爬虫?爬虫又是如何工作的呢?我们先从“爬虫原理”说起。

爬虫又称为网页蜘蛛,是一种程序或脚本。但重点在于:它能够按照一定的规则,自动获取网页信息。爬虫的通用框架如下:
1.挑选种子URL;
2.将这些URL放入待抓取的URL队列;
3.取出待抓取的URL,下载并存储进已下载网页库中。此外,将这些URL放入待抓取URL队列,进入下一循环;
4.分析已抓取队列中的URL,并且将URL放入待抓取URL队列,从而进入下一循环。

咳咳~
还是用一个具体的例子,来说明吧!

1.2 一个爬虫例子

爬虫获取网页信息和人工获取信息,其实原理是一致的,比如我们要获取电影的“评分”信息:

人工操作步骤:

  1. 1. 获取电影信息的页面
  2. 2. 定位(找到)到评分信息的位置
  3. 3. 复制、保存我们想要的评分数据

爬虫操作步骤:

  1. 1. 请求并下载电影页面信息
  2. 2. 解析并定位评分信息
  3. 3. 保存评分数据

感觉是不是很像?

1.3 爬虫的基本流程

简单来说,我们向服务器发送请求后,会得到返回的页面,通过解析页面之后,我们可以抽取我们想要的那部分信息,并存储在指定的文档或数据库中。这样,我们想要的信息就被我们“爬”下来啦~

2. Requests+Xpath 爬取豆瓣电影

Python 中爬虫相关的包很多:Urllib、requsts、bs4……我们从 requests+xpath 讲起,因为太容易上手了!学习之后你就会发现,BeautifulSoup 还是稍微有点难的。

下面我们用 requests+xpath 爬取豆瓣电影:

2.1 安装 Python 应用包:requests、lxml

如果是首次使用Requests+Xpath,首先需要安装两个包:requests和lxml,在终端分别输入以下两行代码即可(安装方法在第1节中已讲过):

pip install requests pip install lxml

2.2 导入我们需要的 Python 模块

我们在jupyter中编写代码,首先导入我们需要的两个模块:

import requests from lxml import etree

Python中导入库直接用”import+库名“,需要用库里的某种方法用”from+库名+import+方法名“。这里我们需要requests来下载网页,用lxml.etree来解析网页。

2.3 获取豆瓣电影目标网页并解析

我们要爬取豆瓣电影《肖申克的救赎》上面的一些信息,网站地址是:
https://movie.douban.com/subject/1292052/

给定 url 并用 requests.get() 方法来获取页面的text,用 etree.HTML() 来解析下载的页面数据“data”。

url = 'https://movie.douban.com/subject/1292052/' data = requests.get(url).text s=etree.HTML(data)

2.4 获取电影名称

获取元素的Xpath信息并获得文本:

file=s.xpath('元素的Xpath信息/text()')

这里的“元素的Xpath信息”是需要我们手动获取的,获取方式为:定位目标元素,在网站上依次点击:右键 > 检查

快捷键“shift+ctrl+c”,移动鼠标到对应的元素时即可看到对应网页代码:

在电影标题对应的代码上依次点击 右键 > Copy > Copy XPath,获取电影名称的Xpath:

这样我们就把元素中的Xpath信息复制下来了:

//*[@id="content"]/h1/span[1]

放到代码中并打印信息:

film=s.xpath('//*[@id="content"]/h1/span[1]/text()') print(film)

2.5 代码以及运行结果

以上完整代码如下:

import requests from lxml import etree url = 'https://movie.douban.com/subject/1292052/' data = requests.get(url).text s=etree.HTML(data) film=s.xpath('//*[@id="content"]/h1/span[1]/text()') print(film)

在 Jupyter 中运行完整代码及结果如下:

至此,我们完成了爬取豆瓣电影《肖申克的救赎》中“电影名称”信息的代码编写,可以在 Jupyter 中运行。

2.6 获取其它元素信息

除了电影的名字,我们还可以获取导演、主演、电影片长等信息,获取的方式是类似的。代码如下:

director=s.xpath('//*[@id="info"]/span[1]/span[2]/a/text()') #导演 actor1=s.xpath('//*[@id="info"]/span[3]/span[2]/a[1]/text()') #主演1 actor2=s.xpath('//*[@id="info"]/span[3]/span[2]/a[2]/text()') #主演2 actor3=s.xpath('//*[@id="info"]/span[3]/span[2]/a[3]/text()') #主演3 time=s.xpath(‘//*[@id="info"]/span[13]/text()') #电影片长

观察上面的代码,发现获取不同“主演”信息时,区别只在于“a[x]”中“x”的数字大小不同。实际上,要一次性获取所有“主演”的信息时,用不加数字的“a”表示即可。代码如下:

actor=s.xpath('//*[@id="info"]/span[3]/span[2]/a/text()') #主演

完整代码如下:

import requests from lxml import etree url = 'https://movie.douban.com/subject/1292052/' data = requests.get(url).text s=etree.HTML(data) film=s.xpath('//*[@id="content"]/h1/span[1]/text()') director=s.xpath('//*[@id="info"]/span[1]/span[2]/a/text()') actor=s.xpath('//*[@id="info"]/span[3]/span[2]/a/text()') time=s.xpath('//*[@id="info"]/span[13]/text()') print('电影名称:',film) print('导演:',director) print('主演:',actor) print('片长:',time)

在jupyter中运行完整代码及结果如下:

3. 关于Requests

Requests库官方的介绍有这么一句话:Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用。

这句话直接并霸气地宣示了 Requests 库是 python 最好的一个HTTP库。为什么它有这样的底气?如有兴趣请阅读 Requests 官方文档 。

Requests 常用的七种方法:

4. 关于解析神器 Xpath

Xpath 即为 XML 路径语言(XML Path Language),它是一种用来确定 XML 文档中某部分位置的语言。

Xpath 基于 XML 的树状结构,提供在数据结构树中找寻节点的能力。起初 Xpath 的提出的初衷是将其作为一个通用的、介于 Xpointer 与 XSL 间的语法模型。但是Xpath 很快的被开发者采用来当作小型查询语言。

可以阅读该文档了解更多关于 Xpath 的知识。

Xpath解析网页的流程:
1.首先通过Requests库获取网页数据
2.通过网页解析,得到想要的数据或者新的链接
3.网页解析可以通过 Xpath 或者其它解析工具进行,Xpath 在是一个非常好用的网页解析工具

常见的网页解析方法比较

  • 正则表达式使用比较困难,学习成本较高
  • BeautifulSoup 性能较慢,相对于 Xpath 较难,在某些特定场景下有用
  • Xpath 使用简单,速度快(Xpath是lxml里面的一种),是入门最好的选择

好了,这节课就到这里!

白白~

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
发生关系,多久一次最舒服?

发生关系,多久一次最舒服?

匡北北
2023-12-15 23:56:59
360公司:不存在资金困难!为全力保障国家安全,公司才从美股退市⋯⋯

360公司:不存在资金困难!为全力保障国家安全,公司才从美股退市⋯⋯

每日经济新闻
2024-05-07 20:28:15
辱华留学生事件后续:已刑拘 其父亲身份家庭背景被扒 果然有情况

辱华留学生事件后续:已刑拘 其父亲身份家庭背景被扒 果然有情况

鋭娱之乐
2024-05-08 17:30:13
祝贺!中国选手会师决赛,大勒布伦0-3被淘汰,莎头冲击混双冠军

祝贺!中国选手会师决赛,大勒布伦0-3被淘汰,莎头冲击混双冠军

邮轮摄影师阿嗵
2024-05-09 07:25:25
再度爆买80亿!明天,可能是我们最后一次实时“围观”北向资金了

再度爆买80亿!明天,可能是我们最后一次实时“围观”北向资金了

每日经济新闻
2024-05-09 16:09:19
小米SU7新车开39公里出故障后续:同意换车,每天补偿150元

小米SU7新车开39公里出故障后续:同意换车,每天补偿150元

鞭牛士
2024-05-09 13:45:16
31岁女护士新婚夜,对丈夫说:你的东西就是我的东西!

31岁女护士新婚夜,对丈夫说:你的东西就是我的东西!

户外阿崭
2024-05-09 12:14:32
建行突发!童文涛被查

建行突发!童文涛被查

中国基金报
2024-05-09 17:36:39
中法联合声明犹如泰山压顶 两常和以色列 会尴尬了谁

中法联合声明犹如泰山压顶 两常和以色列 会尴尬了谁

月满大江流
2024-05-08 14:18:57
证监会同意速达股份IPO注册

证监会同意速达股份IPO注册

每日经济新闻
2024-05-09 18:17:20
中美对决,美国敢扔出最后一张“王牌”,中国就一举解决台湾问题

中美对决,美国敢扔出最后一张“王牌”,中国就一举解决台湾问题

劲松talk
2024-05-09 11:52:17
知名港星移民加拿大节衣缩食,吃顿寿司自认奢侈,面相大变急衰老

知名港星移民加拿大节衣缩食,吃顿寿司自认奢侈,面相大变急衰老

娱乐白名单
2024-05-09 16:45:55
A股:来不及等开盘了,明天(5月10日)周五,市场大概率将这么走

A股:来不及等开盘了,明天(5月10日)周五,市场大概率将这么走

彩云的夕阳
2024-05-09 16:53:54
曙光呈现,乌军在两个方向发动凌厉反攻,释放的信号让人振奋!

曙光呈现,乌军在两个方向发动凌厉反攻,释放的信号让人振奋!

听风听你
2024-05-09 10:39:03
为了恐吓村民,镇政府开出了罚单,自造了一部法律,还委托村里收缴罚款

为了恐吓村民,镇政府开出了罚单,自造了一部法律,还委托村里收缴罚款

法律学堂
2024-05-09 00:06:25
上月辞职后,四川一原董事长被查

上月辞职后,四川一原董事长被查

鲁中晨报
2024-05-09 17:11:04
以色列:若联合国允许巴勒斯坦成正式成员国,美国将完全暂停资助

以色列:若联合国允许巴勒斯坦成正式成员国,美国将完全暂停资助

新时光点滴
2024-05-09 02:37:13
长安、华为、宁德时代合资阿维塔11事故后猛烈燃烧!网友曝内情:撞上电动车电瓶起火,引燃了阿维塔

长安、华为、宁德时代合资阿维塔11事故后猛烈燃烧!网友曝内情:撞上电动车电瓶起火,引燃了阿维塔

和讯网
2024-05-09 10:18:59
1958年,上级下令中科院亩产小麦20万斤,科学家如何应对

1958年,上级下令中科院亩产小麦20万斤,科学家如何应对

老黄有话
2024-05-08 08:00:02
贾玲现身美国,离开美颜滤镜,真实状态曝光,又是一场骗局?

贾玲现身美国,离开美颜滤镜,真实状态曝光,又是一场骗局?

天保影视V3
2024-05-09 07:30:02
2024-05-09 20:46:44
IT编程技能提升
IT编程技能提升
专注在线教育的交流与发展
86文章数 3605关注度
往期回顾 全部

科技要闻

消息称百度副总裁璩静已离职

头条要闻

百度副总裁璩静已离职 本人尚未回应

头条要闻

百度副总裁璩静已离职 本人尚未回应

体育要闻

雷霆三少2.0,最大的不同点在哪?

娱乐要闻

高亚麟魏嘉同框画面曝光,当时已产女

财经要闻

全国限购仅剩6地!住房限购令 已近尾声

汽车要闻

可以动心了 海狮07EV空间够大/车机智能加BUFF

态度原创

本地
教育
家居
手机
公开课

本地新闻

不懂就问,站姐转黑为什么是明星的第一酷刑

教育要闻

魔方一开始是一种教学辅助工具,由匈牙利一位老师发明。被称为“东方魔方”的鲁班锁又蕴含着怎样的深刻含义...

家居要闻

知行空间 消弭生活的界限

手机要闻

realme 真我GT Neo6 「流银骑士」图赏:液态流银,钛空之镜

公开课

父亲年龄越大孩子越不聪明?

无障碍浏览 进入关怀版