爬虫实践---电影排行榜和图片批量下载
1.目标网址:http://dianying.2345.com/top/
需要找到的信息:电影的名字,主演,简介,和标题图片
2.查看页面结构:
容易看到,需要的主题部分,都被包裹在‘<ul>“列表标签里,
那么简单的用bs4库找到 "<ul>" tag并迭代取出每一条“<li>”tag,
最后再从每个<li>标签里找到需要的信息即可。
3.图片下载:
在电影排行榜爬虫当中,有一项目标是:爬取每个电影的标题图,
那么如何以文本的形式爬下来呢?
在计算机的世界里,一切的数据归根到底都是以“0”和“1”的二进制形式存在的。
图片自然也不例外,任何一张图片,都是以“字节流 ”的形式,
通过了一定的编码方式,被计算机排列组合,从而显示成我们肉眼所看到的图片。
那么只要把图片数据从网上下载下来,然后再以二进制的格式写入到本地即可。
给出一个图片下载的通用代码片段:
import requestsdef get_pic_from_url(url):#从url以二进制的格式下载图片数据pic_content = requests.get(url,stream=True).contentopen('filename','wb').write(pic_content)
4.完整代码
import requests from bs4 import BeautifulSoupdef get_html(url):try:r = requests.get(url,timeout = 30)r.raise_for_statusr.encoding = 'gb2312'return r.textexcept:return 'error'def get_content(url):html = get_html(url)soup = BeautifulSoup(html,'lxml')# 找到电影排行榜的ul列表movie_list = soup.find('ul',class_='picList clearfix')movies = movie_list.find_all('li')for movie in movies:# 找到图片链接,电影名称img_url = movie.find('img')['src']name = movie.find('span',class_='sTit').text#这里做一个异常捕获,防止没有上映时间try:time = movie.find('span',class_='sIntro').textexcept:time = '暂无上映时间'# 迭代找出“pACtor”的所有子孙节点,解决每一位演员的名字分割问题try:actors = movie.find('p',class_='pActor').contentsactor = ''for act in actors:actor = actor + act.string + ' 'except:actor = '暂无主演'# 找到影片简介intro = movie.find('p',class_='pTxt pIntroShow').textprint("片名:{}\t{}\n{}\n{} \n \n".format(name,time,actor,intro))# 把图片下载下来,以二进制读写模式打开with open('C:/Users/Administrator/Desktop/img/'+name+'.png','wb+') as f:f.write(requests.get(img_url).content)def main():url = 'http://dianying.2345.com/top/'get_content(url)if __name__ == '__main__':main()
5.输出结果
6.注意点
requests的content和text属性的区别:
从print 结果来看是没有任何区别的
resp.text返回的是Unicode型的数据。
resp.content返回的是bytes型也就是二进制的数据。
也就是说,如果想获取文本,可以通过r.text。
如果想取图片,文件,则可以通过r.content。
转载于:https://www.cnblogs.com/Lovebugs/p/7243629.html
爬虫实践---电影排行榜和图片批量下载相关推荐
- python 小说爬虫_从零开始写Python爬虫 --- 1.7 爬虫实践: 排行榜小说批量下载
从零开始写Python爬虫 --- 1.7 爬虫实践: 排行榜小说批量下载Ehco 5 个月前 本来只是准备做一个爬起点小说名字的爬虫,后来想了一下,为啥不顺便把小说的内容也爬下来呢?于是我就写了这个 ...
- 从零开始写Python爬虫 --- 1.7 爬虫实践: 排行榜小说批量下载
从零开始写Python爬虫 --- 1.7 爬虫实践: 排行榜小说批量下载 Ehco 5 个月前 本来只是准备做一个爬起点小说名字的爬虫,后来想了一下,为啥不顺便把小说的内容也爬下来呢?于是我就写了这 ...
- Node.js aitaotu图片批量下载Node.js爬虫1.00版
即使是https网页,解析的方式也不是一致的,需要多试试. 代码: //====================================================== // aitaot ...
- Node.js umei图片批量下载Node.js爬虫1.00
这个爬虫在abaike爬虫的基础上改改图片路径和下一页路径就出来了,代码如下: //====================================================== // ...
- Node.js mimimn图片批量下载爬虫 1.00
这个爬虫在Referer设置上和其它爬虫相比有特殊性.代码: //====================================================== // mimimn图片批 ...
- Node.js meitulu图片批量下载爬虫1.051
原有1.05版程序没有断点续传模式,现在在最近程序基础上改写一版1.051. //====================================================== // m ...
- 【pyhon】nvshens图片批量下载爬虫1.01
# nvshens图片批量下载爬虫1.01 # 原先版本在遇到网络故障时回下载不全,这回更改了模式使得下载不成就重新下载,直到全部下载完毕 from bs4 import BeautifulSoup ...
- Node.js monly图片批量下载爬虫1.00
此爬虫又用到了iconv转码,代码如下: //====================================================== // mmonly图片批量下载爬虫1.00 ...
- 自己动手写工具:百度图片批量下载器
开篇:在某些场景下,我们想要对百度图片搜出来的东东进行保存,但是一个一个得下载保存不仅耗时而且费劲,有木有一种方法能够简化我们的工作量呢,让我们在离线模式下也能爽爽地浏览大量的美图呢?于是,我们想到了 ...
最新文章
- Flex4 Application中与Module通信
- 安信证券王环:安信证券数据中台建设历程
- NaN Inf(OC)
- Inna and Binary Logic
- C/C++ ltoa函数 - C语言零基础入门教程
- mysql 恢复空密码_mysql 找回密码
- 学生军训成绩管理系统-菜单截图
- 点击头像上传文件的效果
- PARDISO 5.0.0 Solver Project
- EasyRecovery---U盘数据恢复技巧
- MacBook Pro 如何删除多余专注模式?
- 手工安装hr表+oracle,[20200825]手工安装HR schema.txt
- 从零开始学Android(一)
- PostgreSQL 命令行客户端 psql 使用指南
- 大学计算机实践教程咖啡文化,北京大学图书馆学习共享空间.docx
- mac 下安装Microsoft Remote Desktop远程桌面客户端
- mysql查询薪酬最高_SQL查询找到第N个最高薪水
- 数据集FFHQ和LSUN介绍
- logrotate - rotates, compresses, and mails system logs
- cent os 主题安装
热门文章
- 10倍!微软开源深度学习优化库DeepSpeed,可训练1000亿参数模型
- linux单用户模式修复磁盘,在单用户模式下使用fsck命令修复受损的Mac硬盘
- 三维视觉前沿进展年度报告
- Tesla P100
- pyTorch自然语言处理简单例子
- 人脸扫描建模_iPhone12Pro可以3D建模,逼真还原度达95%以上
- mysql trigger 有时 不执行_Mysql 寒假刷题TIPs
- sql 孩子兄弟表示法 所有子节点_matlab实现随机+蓄意攻击网络节点(1)
- React、Angular、Vue 框架比较
- docker简介以及优缺点