0.目录

1.分析页面
2.初步代码
3.问题排解
4.下载代码
5.总结

1.分析页面

关于xpath网上有许多的教程了,关于xpath的介绍和语法都不在这里赘述,本篇主要讲解如何用xpath爬取豆瓣最新上映电影的海报,下载并且用电影名来命名文件,也就是我们主要获取海报的url和电影名。那些爬取电影详细资料和豆瓣TOP250也是大同小异的,而选择最新上映的电影是因为其中具有很强的代表性。

首先,进入豆瓣正在上映的页面,右键检查海报,发现我们需要的海报url和电影名都在这个标签下面,那就好办很多了。


2.初步代码:

# encoding: utf-8import requests
from lxml import etree
from urllib import requestdef get_page(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36','Referer': 'https://movie.douban.com/',}response = requests.get(url, headers)return response.textdef get_img(url):text = get_page(url)html = etree.HTML(text)# 获取所有的<img>标签trs = html.xpath("//img")for tr in trs:# 获取<img>内的src和alt属性url_img = tr.xpath("@src")[0]name = tr.xpath("@alt")[0]print(url_img)print(name)print(len(trs))def main():url = 'https://movie.douban.com/cinema/nowplaying/guangzhou/'get_img(url)if __name__ == '__main__':main()

展示运行结果的一部分:

3.问题排解

海报的url和电影名能够正常输出,查看正在上映的列表的数量会发现其中只有37个,而这里有47个。拉倒页面最下会发现我们还获取了【即将上映】的电影名,所以我们需要在获取< img >标签前加上限制,比如可以加上只获取< div id=“nowplaying” >标签下的数据。

修改代码:

def get_img(url):text = get_page(url)html = etree.HTML(text)# 获取<div id="nowplaying">标签下的所有数据,而且xpath函数返回的是一个列表ul = html.xpath("//div[@id='nowplaying']")[0]# 获取<div id="nowplaying">标签下的子孙标签<img>trs = ul.xpath(".//img")for tr in trs:# 获取<img>内的src和alt属性url_img = tr.xpath("@src")[0]name = tr.xpath("@alt")[0]print(url_img)print(name)print(num)

展示运行结果的一部分:

4.下载代码

可以发现已经获取到了我们想要的数据,那么下一步就是根据url下载海报,并且用电影名来命名文件。在下载之前,还需要在该程序的所在目录建一个名为:images 的文件夹。

request.urlretrieve(url_img, 'images/' + name + '.jpg')

5.总结

在使用xpath爬取数据时,分析标签是其中最难的部分,整体写起来还是不难的。下一次还会讲解用BeautifulSoup和正则表达式来干相同的事,并且分析其中不同的地方。

如果你想获取评分,可以这样:

ul = html.xpath("//div[@id='nowplaying']")[0]
trs = ul.xpath(".//li")
for tr in trs:data_score =tr.xpath("@data-score")[0]

附录:完整代码

# encoding: utf-8import requests
from lxml import etree
from urllib import requestdef get_page(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36','Referer': 'https://movie.douban.com/',}response = requests.get(url, headers)return response.textdef get_img(url):text = get_page(url)# 构造了一个XPath解析对象并对HTML文本进行自动修正html = etree.HTML(text)# 获取<div id="nowplaying">标签下的所有数据,而且xpath函数返回的是一个列表ul = html.xpath("//div[@id='nowplaying']")[0]# 获取<div id="nowplaying">标签下的子孙标签<img>trs = ul.xpath(".//img")fns_num = 1num = len(trs)for tr in trs:# 获取<img>内的src和alt属性url_img = tr.xpath("@src")[0]name = tr.xpath("@alt")[0]# 下载剧照request.urlretrieve(url_img, 'images/' + name + '.jpg')# 显示剧照下载的进度print("\r完成进度: {:.2f}%".format(fns_num * 100 / num), end="")fns_num += 1def main():url = 'https://movie.douban.com/cinema/nowplaying/guangzhou/'get_img(url)if __name__ == '__main__':main()

运行结果:

python爬虫之通过xpath获取豆瓣最新上映电影的海报相关推荐

  1. python怎么爬取电影海报_python爬虫之通过BeautifulSoup获取豆瓣最新上映电影的海报...

    0.目录 1.分析页面 2.初步代码 3.完整代码 4.总结 5.补充 1.分析页面 上一次我们讲了xpath获取豆瓣最新上映电影的海报,这一次会分析如何使用BeautifulSoup获取.启程:py ...

  2. Python爬虫示例1:获取豆瓣电影正在热播的电影信息

    个人的第一个python爬虫程序,如果错误,请指正. 程序用于抓取豆瓣电影正在热播的电影信息,详细代码如下所示: #!/usr/bin/python # -*- coding: UTF-8 -*- i ...

  3. python爬虫实践之爬取豆瓣高评分电影

    目录 概述 准备 所需模块 涉及知识点 运行效果 完成爬虫 1. 分析网页 2. 爬虫代码 3. 整理总结 概述 爬取豆瓣的高评分的电影. 准备 所需模块 re模块 requests模块 涉及知识点 ...

  4. Python爬虫入门 | 4 爬取豆瓣TOP250图书信息

      先来看看页面长啥样的:https://book.douban.com/top250   我们将要爬取哪些信息:书名.链接.评分.一句话评价--   1. 爬取单个信息 我们先来尝试爬取书名,利用之 ...

  5. Python爬虫入门(爬取豆瓣电影信息小结)

    Python爬虫入门(爬取豆瓣电影信息小结) 1.爬虫概念 网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或脚本.爬虫的本质是模拟浏览器打开网页,获取网页中我们想要的那部分数据. 2.基本流程 ...

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

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

  7. python爬虫——Cookie登录爬取豆瓣短评和影评及常见问题

    python爬虫--Cookie登录爬取豆瓣短评和影评 常见问题(本文已解决) 具体步骤 一.获取网页源码 短评.影评 二.解析网页源码及爬取评论 1.短评网页解析 ①确定位置 2.短评爬取 ①名称爬 ...

  8. python scrapy爬取豆瓣即将上映电影用邮件定时推送给自己

    本文不是python.scrapy的教程,而是分享一个好玩的点子. python教程请看python教程,scrapy教程请看scrapy教程 爬取豆瓣高分电影教程参考python爬虫入门笔记:用sc ...

  9. python爬虫入门练习:BeautifulSoup爬取猫眼电影TOP100排行榜,pandas保存本地excel文件

    传送门:[python爬虫入门练习]正则表达式爬取猫眼电影TOP100排行榜,openpyxl保存本地excel文件 对于上文使用的正则表达式匹配网页内容,的确是有些许麻烦,替换出现任何的差错都会导致 ...

最新文章

  1. IT资产管理的演变原文-Generations of IT Asset Management
  2. 必会系列之 filter 和 interceptor 的区别
  3. 内存映射(mmap系统调用)
  4. gitl更新最近代码_常见的蓝屏代码以及解决方法
  5. JDK 8 Javadoc调整了方法列表
  6. 白领必看的十种职场致命毒药
  7. 创建python虚拟环境
  8. NTFS USN的Create和工具代码汇总
  9. IO-03. 求整数均值
  10. SAP License:SAP顾问是如何炼成的——我所理解的SAP顾问
  11. LeetCode(463)——岛屿的周长(JavaScript)
  12. python学习第二天标准输入输出和注释用法
  13. T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他
  14. 淘宝开源的代码质量检测工具,太强大了!!
  15. session 过期怎么办
  16. 配置安装跟踪服务器Tracker 配置FastDFS存储服务器 Storage
  17. python删除数据集中的空值_关于在python中如何使用pandas库读取excel表格后 删除含有空值的列...
  18. 【人工智能笔记】第三十节:注意力原理分析,及tensorflow 2.0 实现
  19. 【数字IC基础】IC(Integrated Circuit,集成电路)常用缩写
  20. 【CoderSay】Code For Better 谷歌开发者之声 - 相遇2022GoogleSummit

热门文章

  1. metasploit利用IE漏洞XSS挂马拿内网主机
  2. window.onload不能正常执行
  3. 洛谷 P1927 防护伞
  4. Android的动画机制一 ----逐帧动画
  5. Layoutparams理解
  6. 关于磁珠和电感的区别
  7. DL之Attention:Attention注意力机制算法的起源与盛行及其长距离有效的原因、概述(背景/本质/与ED框架关系/架构/优缺点/扩展,理解,本质,变种)、案例应用(CV/NLP)之详细攻略
  8. android协议分析,【安卓QQ协议分析 】分析带说明
  9. 被遗忘的明星,2K中体现不了价值的战士——莫宁
  10. 首师大附中OJ系统 0028 判断奇偶