【实战2】爬取豆瓣Top250电影的海报
【实战2】爬取豆瓣Top250电影的海报
- 一. 项目目标分析
- 二. 完整代码
参考链接:
https://www.bilibili.com/video/BV1ZJ411N7Fq?p=4
一. 项目目标分析
【目标】爬取豆瓣电影Top250的海报
250张图片分布在10个页面中,先抓第1页。要得到25张图片,就要找到25张图片对应的url。
我们的过程应该是这样的:
- 先发起请求,得到豆瓣电影网站的html文档(源代码)
- 从html文档中提取25张图片的url
- 对25个url发起请求,获得图片
- 对剩下的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:爬取豆瓣top250电影
爬取豆瓣排行榜前250名电影名称 import urllib.request import bs4 import reheaders = {"User-Agent": " ...
- 【实战1】用BeatuifulSoup解析器爬取豆瓣Top250电影的名称
[实战1]用BeatuifulSoup解析器爬取豆瓣Top250电影的名称 一. 爬虫的普遍步骤 二. 项目目标分析 三.完整爬取代码 参考链接: https://www.bilibili.com/v ...
- Python爬取豆瓣Top250电影中2000年后上映的影片信息
Python爬取豆瓣Top250电影中2000年后上映的影片信息 前言 双十一前加在京东购物车的一个东西,价格330,Plus会员用券后差不多310.双十一当天打开看了下399,还得去抢满300减10 ...
- [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息
这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对 ...
- 爬取豆瓣top250电影并分析
爬取豆瓣top250电影,提取评论关键词,然后将同一国家的关键词做成一个词云,轮廓是每个国家的地图轮廓 爬取数据 需要爬取电影名称.导演.年份.地区和前10个评论除了地区,其他的都没什么问题,我们来研 ...
- scrapy爬取豆瓣top250电影数据
scrapy爬取豆瓣top250电影数据 scrapy框架 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. sc ...
- python采用requests+bs4爬取豆瓣top250电影信息
爬取豆瓣top250电影说明 (链接:https://movie.douban.com/top250,可爬取一页或者多页(输出电影的正标题(肖申克的救赎),副标题( The Shawshank Red ...
- 爬取豆瓣TOP250电影的评分、评价人数、短评等信息,并在其保存在sql数据库中。
爬取目标 爬取豆瓣TOP250电影的评分.评价人数.短评等信息,并在其保存在sql数据库中. 最终实现效果如图: 确定爬取的URL 爬取的网页地址为:https://movie.douban.com/ ...
- Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除)
Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除) import requests from bs4 import BeautifulSoup import ti ...
最新文章
- 《动手学深度学习》PyTorch版GitHub资源
- Qt Creator中常用快捷键和小技巧
- salmap绕waf
- 小米手机反复提示“请勿遮挡听筒区域“
- JSON解析的几种方式
- 第 6 章 —— 装饰模式
- 卖金鱼的地方_1个水族店,5个周转箱,卖鲫鱼和泥鳅,老板对水族的热爱
- python-jieba分词模块
- Apache ab并发负载压力测试
- 底部导航栏使用BottomNavigationBar
- B00012 C++算法库的sort()函数
- imu 里程计融合_多传感器融合 RLINS概述
- mysql集群原理剖析
- xcode打包cordova项目生成ipa
- 计算主波长色纯度色温和色坐标转换CIE1931图色坐标显示NTSC色饱和度
- esp32 红外接收
- buuctf--CrackRTF
- 通过className属性给一个元素追加新class(addClass函数)
- 【第三届蓝桥杯】手机尾号
- java 快速创建map_快速创建 Map