前言

“武林至尊,宝刀屠龙,号令天下,莫敢不从。倚天不出,谁与争锋"。如此熟悉的台词想必勾起了无数人的童年记忆。这便是金庸著作《倚天屠龙记》中的经典台词。想必当时也有很多人替张无忌选择和谁在一起而烦恼。如今,新版《倚天屠龙记》正播的如火如荼,听说拍的挺不错的。当然今天我们不是来研究屠龙宝刀和武林秘籍的。今天我们来爬一爬新版《倚天屠龙记》中的女主-赵敏。

项目环境

语言:Python3
编辑器:Pycharm
导包:requests,re,pypinyin
目标网站:美桌(http://www.win4000.com/)

目标网站分析


打开目标网站,点击导航栏明星图片。在下侧搜索框输入"陈钰琪"。搜索指定明星图片。然后见下一张图。

注意看网址栏圈出的正是明星名字的汉语拼音。考考大家,“钰"字怎么读啊?正确的应该读"yù”。不知道怎么地。这里就变成了"jue"。我想大概是把"珏"和"钰"混淆了。不过我们不必纠结于此。我换了其他几位明星都是明星名字的汉语拼音。我们找到网址的变化规律就可以了。

那么可以看到照片是分类展示的,下面有一个分页。我们点开开发者工具具体看一看。

点击其中一个分类,看右侧圆圈处html详细信息。有一个a标签。里面href属性正是打开这类照片的url。下面img标签中的src则是当前分类所显示的照片。再下面就是照片分类的title。可以看到title前面都有"陈钰琪"三个字。后面会用到。我们打开其中一个分类,继续看页面情况。

打开每一个分类之后。可以看到页面的上方显示了总的照片张数。和当前是第几张。右上侧有一个下载按钮。点击之后详情如右边圆圈所示。里面的url正是图片的地址。

上方这张图,可以看到图片的右侧有一个下一张图标。点击之后可以看到下一页的网址。我们再看最后一张图。

在页面尾部是一个分页。我们点击下一页。可以在右侧看到下一页的url的详情。好了。页面分析完了。我们来整理一下思路。

实现思路

1.打开目标明星所对应的网页,此时向我们展示的是第一页的分类。
2.得到当前页面所有分类所对应的url
3.依次访问每个分类对应的url
4.依次下载该分类下所有照片
5.重复以上步骤,直到下载完所有照片

代码详情

首先看主函数

def main():name = input ("请输入明星的名字:")nameUrl = "http://www.win4000.com/mt/" + ''.join(lazy_pinyin(name)) + ".html"root = "D://" + name + "//"try:text = get_html_text (nameUrl)if not re.findall (r'暂无(.+)!', text):if not os.path.exists (root):os.mkdir (root)down_pictures (text, root, name)try:nextPage = re.findall (r'next" href="(.+)"', text)[0]while nextPage:nextText = get_html_text (nextPage)down_pictures (nextText, root, name)nextPage = re.findall (r'next" href="(.+)"', nextText)[0]except IndexError:print("已全部下载完毕")except TypeError:print("没有{}的照片".format (name))return

这里用户输入一个明星的名字。通过pypinyin这个库。将汉语名字转化成对应的汉语拼音。然后拼接成该明星所对应的url。请求该url下载照片。下载完之后继续下载下一页照片。直到下载完毕。
下载照片

def down_pictures(text, root, name):pageUrls = get_page_urls (text, name)titles = re.findall (r'alt="' + name + r'(.+)" ', text)for i in range (len (pageUrls)):pageUrl = pageUrls[i][0]path = root + titles[i] + "//"if not os.path.exists (path):os.mkdir(path)if not os.listdir (path):pageText = get_html_text (pageUrl)totalPics = int (re.findall (r'<em>(.+)</em>)', pageText)[0])downUrl = re.findall (r'href="(.+?)" class="">下载图片', pageText)[0]count = 1;while count <= totalPics:picPath = path + str (count) + ".jpg"r = requests.get (downUrl)with open (picPath, 'wb') as f:f.write (r.content)f.close ()print ('{} - 第{}张下载已完成\n'.format (titles[i], count))count += 1nextPageUrl = re.findall (r'href="(.+?)">下一张', pageText)[0]pageText = get_html_text (nextPageUrl)downUrl = re.findall (r'href="(.+?)" class="">下载图片', pageText)[0]return

首先获取当前页面所有分类url。依次下载该分类下所有照片。然后继续下载下一个分类。
获取当前页所有分类url

def get_page_urls(text, name):re_pageUrl = r'href="(.+)">\s*<img src="(.+)" alt="' + namereturn re.findall (re_pageUrl, text)

请求网址

def get_html_text(url):r = requests.get(url, timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.text

最后运行程序,我们看看爬取结果

获取程序源码,关注公众号《元大头》后台回复【陈钰琪】

关注公众号哦

python帮你来追剧相关推荐

  1. 如何在免费追剧?Python制作视频解析免费追剧神器

    前言 同学们在闲暇之余是否喜欢看电影或者电视剧呢? 今天带领大家使用python制作能免费追剧的桌面软件.还在等什么?发车了! 效果我就不再这里演示了

  2. Python爬虫:人人影视追剧脚本

    抓包分析 搜索页面 影视资源页面 5.22更新完善 获取百度云,电驴等连接 代码实现 所需第三方库 搜索页面 5.22更新解析搜索页链接 获取下载页跳转链接 获取下载链接 5.22更新,增加json文 ...

  3. ed2k解析源码php,Python爬虫:人人影视追剧脚本

    最近追剧时发现找资源挺繁琐的,网页切换来切换去耗时也多,所以就想写个脚本代替.于是今下午花了点时间,先对人人影视进行了资源爬取. 抓包分析 搜索页面 打开工作台,选择NETWORK,刷新之后,如图: ...

  4. 追剧计划第三弹!UC Berkeley出品,全栈深度学习!

    关注卖萌屋比较早的小伙伴,大概还记得2020年初时我们组织的斯坦福大学CS224N自然语言处理公开课追剧计划,以及后来的斯坦福大学CS520知识图谱公开课追剧活动.尽管活动已经结束很长一段时间,但是仍 ...

  5. 没时间看电影追剧,AI 一键让影视变漫画

    点击 机器学习算法与Python学习 ,选择加星标 精彩内容不迷路 如今,电影.电视剧以及各类视频,已经成为我们生活中不可缺少的一部分.据报告,每天上传到 YouTube 的视频总时长,就需要一个人花 ...

  6. 爬取24w+弹幕信息后,我果断去追剧了

    数据获取是数据分析中的重要的一步,数据获取的途径多种多样,在这个信息爆炸的时代,数据获取的代价也是越来越小.尽管如此,仍有很多小伙伴们不清楚如何获取有用信息.本文以最近热播排行榜第一名的<流金岁 ...

  7. 推荐免费追剧、超前观影的APP + 谈谈能赚钱的APP

    这种软件或网站还是不宜声张,不然就会像"PanDownload"一样下架被捕. Android端 1.小小影视         通过完成以上任务,一天基本能挣1块,现在要求满100 ...

  8. 通过 Plex + Trakt 同步观看状态和评分,轻松记录你的追剧观影史

    喜欢看电影.追剧.追综艺的朋友想必都有做记录的习惯,Plex 的用户里用豆瓣的人估计不少,使用豆瓣标记电影.写影评.短评和参与线上讨论是非常方便的,但是豆瓣对电视剧的支持相对还是比较弱,很多剧的单集信 ...

  9. python查看微信撤回消息_想查看微信好友撤回的消息?Python帮你搞定

    要说微信最让人恶心的发明,消息撤回绝对能上榜. 比如你现在正和女朋友用微信聊着天,或者跟自己喜欢的女孩子聊着天,一个不留神,你没注意到对方发的消息就被她及时撤回了,这时你很好奇,好奇她到底发了什么?于 ...

最新文章

  1. SQL 注入真是防不胜防!
  2. 盒模型,块状元素,行内元素
  3. 关于C#开发山寨操作系统,程序语言,浏览器,IDE,Office,Photoshop等大型程序的可行性歪论及意义...
  4. 在终端输入命令打开mac自带的python工具IDLE
  5. 详解使用fastboot为Android刷入原厂镜像
  6. 高能预警!这些段子已刷爆大学老师朋友圈
  7. Django框架 之 Ajax
  8. ROR中简单的数据操作
  9. 函数在区间连续可以推出什么_A-22 函数的点连续、单侧连续、区间连续
  10. java新手笔记7 找最小、最大、排序
  11. js 测试正则表达式
  12. Java面试之爱立信
  13. CycleGAN与pix2pix详解
  14. 教你如何清除计算机病毒
  15. python中一元二次方程的判别式_【Python算法作业】解一元二次方程
  16. kotlin java 知乎_GitHub - luciferldy/ZhihuDailyKotlin: 这是是一个使用 Kotlin 开发的知乎日报客户端...
  17. 手机中android版本9是什么,这是Android手机Android 9.0还是Android 6.0?
  18. 计算机怎么登录用户名和密码忘了怎么办,忘记了路由器的登录用户名与密码怎么办...
  19. 易语言 如何调用麦谈帮API接口?
  20. 建立正确的领导思维方式

热门文章

  1. 2022年国家将打击各种侵权行为,新电商法实施:“无商标,无专利,无版权”产品将会面临侵权强制下架和赔偿等。2022品牌年,拼速度。注册商标、知识产权、软著权益、条码申请。
  2. 程序员考证,这十大证书含金量最高
  3. 2011-MVP-OpenDay“聚首云端 智领未来”
  4. 【数据平台】之Cassandra大数据利器
  5. Apache2.2+PHP5.3+MySql5.5上构建EyeOS2.5
  6. 素数筛选法 (求1~n的素数)
  7. hp laserjet 5200l打印机开机后有明显噪音的解决方案
  8. 五粮液:绩优蓝筹稳步填权
  9. C8051F340之keil uVision3工程建立
  10. mtk平台at_mode模式下震动不振原因分析