【实战2】爬取豆瓣Top250电影的海报

  • 一. 项目目标分析
  • 二. 完整代码

参考链接:
https://www.bilibili.com/video/BV1ZJ411N7Fq?p=4

一. 项目目标分析

【目标】爬取豆瓣电影Top250的海报
  250张图片分布在10个页面中,先抓第1页。要得到25张图片,就要找到25张图片对应的url。

我们的过程应该是这样的:

  1. 先发起请求,得到豆瓣电影网站的html文档(源代码)
  2. 从html文档中提取25张图片的url
  3. 对25个url发起请求,获得图片
  4. 对剩下的9页进行同样的操作

【定位src】src属性包含了我们想要的图片的url,所以我们接下来要做的是定位src

(1)src在< img >标签内,但我们发现,页面内除了海报图片还有其他图片,所以只定位img标签不够精确。

(2)我们往上面的标签寻找,找到< a >标签,所有的超级链接都是< a >标签,还是不够明确。

(3)接着向上找,< div >,

(4)继续向上找< li >,发现是有规律的,每一部电影都位于一个< li >中。那么如果定位到每一个< li >,再在每一个< li > 中找< img >,就是唯一的了。但其他的标签下也有< li >,所以继续找

(5)找到了< ol >,我们用标签+属性来确定我们想找的部分。

import requests
from bs4 import BeautifulSoupurl='https://movie.douban.com/top250'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36'}
res=requests.get(url,headers=headers)
res.status_code

——>200

html=res.text  #抓出网页源代码
"""2.提取25张图片的url  也就是要进行页面解析"""
soup=BeautifulSoup(html,'lxml') #实例化类的对象,用lxml解析器
movie_img=[]ol=soup.find('ol',class_='grid_view') #ol是一个很普通的标签,所以加上后面的属性,属性class要加_不然就以为是定义类
ol
li_list=ol.find_all('li')
for li in li_list:img=li.find('img')title=img['alt']  #把电影名字也抓取出来img_url=img['src'] #根据字典里的键取值print(title,img_url)

res=requests.get('https://img9.doubanio.com/view/photo/s_ratio_poster/public/p1454261925.jpg')
res.status_code

——>200

res.text


对于图片我们不能直接用text方法,我们直接存入到文件中。

with open('电影海报\%s.jpg'%title,'wb') as f:  #创建一个title.jpg的文件  '%s' %XXXf.write(res.content)

二. 完整代码

import requests
from bs4 import BeautifulSoupdef save_img(url,title):res=requests.get(url,headers=headers)if res.status_code==200:print('抓取成功')with open('电影海报\%s.jpg'%title,'wb') as f:  #创建一个title.jpg的文件  '%s' %XXXf.write(res.content)else:print('抓取失败')def parse_data(html):soup=BeautifulSoup(html,'lxml')movie_img=[]ol=soup.find('ol',class_='grid_view')li_list=ol.find_all('li')for li in li_list:img=li.find('img')title=img['alt']  #把电影名字也抓取出来img_url=img['src'] #根据字典里的键取值save_img(img_url,title) def get_imgs(url):   #这里的url是页面的urlheaders={'User-Agent':'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36'}res=requests.get(url,headers=headers)if res.status_code==200:html=res.textparse_data(html)    for i in range(10):url='https://movie.douban.com/top250?start=%d&filter='%(i*25)get_imgs(url)

【实战2】爬取豆瓣Top250电影的海报相关推荐

  1. 爬虫实战1:爬取豆瓣top250电影

    爬取豆瓣排行榜前250名电影名称 import urllib.request import bs4 import reheaders = {"User-Agent": " ...

  2. 【实战1】用BeatuifulSoup解析器爬取豆瓣Top250电影的名称

    [实战1]用BeatuifulSoup解析器爬取豆瓣Top250电影的名称 一. 爬虫的普遍步骤 二. 项目目标分析 三.完整爬取代码 参考链接: https://www.bilibili.com/v ...

  3. Python爬取豆瓣Top250电影中2000年后上映的影片信息

    Python爬取豆瓣Top250电影中2000年后上映的影片信息 前言 双十一前加在京东购物车的一个东西,价格330,Plus会员用券后差不多310.双十一当天打开看了下399,还得去抢满300减10 ...

  4. [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息

    这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对 ...

  5. 爬取豆瓣top250电影并分析

    爬取豆瓣top250电影,提取评论关键词,然后将同一国家的关键词做成一个词云,轮廓是每个国家的地图轮廓 爬取数据 需要爬取电影名称.导演.年份.地区和前10个评论除了地区,其他的都没什么问题,我们来研 ...

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

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

  7. python采用requests+bs4爬取豆瓣top250电影信息

    爬取豆瓣top250电影说明 (链接:https://movie.douban.com/top250,可爬取一页或者多页(输出电影的正标题(肖申克的救赎),副标题( The Shawshank Red ...

  8. 爬取豆瓣TOP250电影的评分、评价人数、短评等信息,并在其保存在sql数据库中。

    爬取目标 爬取豆瓣TOP250电影的评分.评价人数.短评等信息,并在其保存在sql数据库中. 最终实现效果如图: 确定爬取的URL 爬取的网页地址为:https://movie.douban.com/ ...

  9. Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除)

    Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除) import requests from bs4 import BeautifulSoup import ti ...

最新文章

  1. 《动手学深度学习》PyTorch版GitHub资源
  2. Qt Creator中常用快捷键和小技巧
  3. salmap绕waf
  4. 小米手机反复提示“请勿遮挡听筒区域“
  5. JSON解析的几种方式
  6. 第 6 章 —— 装饰模式
  7. 卖金鱼的地方_1个水族店,5个周转箱,卖鲫鱼和泥鳅,老板对水族的热爱
  8. python-jieba分词模块
  9. Apache ab并发负载压力测试
  10. 底部导航栏使用BottomNavigationBar
  11. B00012 C++算法库的sort()函数
  12. imu 里程计融合_多传感器融合 RLINS概述
  13. mysql集群原理剖析
  14. xcode打包cordova项目生成ipa
  15. 计算主波长色纯度色温和色坐标转换CIE1931图色坐标显示NTSC色饱和度
  16. esp32 红外接收
  17. buuctf--CrackRTF
  18. 通过className属性给一个元素追加新class(addClass函数)
  19. 【第三届蓝桥杯】手机尾号
  20. java 快速创建map_快速创建 Map

热门文章

  1. 防治新冠病毒感染,儿童如何居家备药?
  2. 小白版-实现网页APP抢券按钮的自动点击?
  3. VUE双向绑定的原理(简单版)+虚拟DOM 节点的创建和更新
  4. 扫码器.java_条码扫描器在Java上的实现
  5. mac、windows 设置终端代理
  6. 【动态ppt制作软件】Focusky教程 | 导入PPT
  7. YYYY-mm-dd HHMMSS大小写解释
  8. 会计基础-会计要素+会计等式+会计要素计量属性
  9. SRE体系及稳定性建设
  10. AXI interconnect IP核的说明及用法