爬虫实战——批量爬取明星图片(http://www.win4000.com/)
来源:互联网 发布:大学生网络受骗原因 编辑:程序博客网 时间:2024/04/30 07:17
爬取网站
美桌(http://www.win4000.com)
由于该网站并没有robots协议,因此可以任意爬取。
技术路线
requests+re
除此之外用到了pypinyin库用于进行名字到拼音的转换
代码
# -*- coding: utf-8 -*-"""Created on Mon Oct 16 20:32:27 2017@author: 望"""import requestsimport reimport osfrom pypinyin import pinyin, lazy_pinyindef getHTMLText(url):try:r = requests.get(url,timeout=30)aor.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:print("")def getPageUrls(text,name): re_pageUrl=r'href="(.+)">\s*<img src="(.+)" alt="'+name return re.findall(re_pageUrl,text) def downPictures(text,root,name): pageUrls=getPageUrls(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=getHTMLText(pageUrl) totalPics=int(re.findall(r'<em>(.+)</em>)',pageText)[0]) downUrl=re.findall(r'href="(.+?)" class="">下载图片',pageText)[0] cnt=1; while(cnt<=totalPics): picPath=path+str(cnt)+".jpg" r=requests.get(downUrl) with open(picPath,'wb') as f: f.write(r.content) f.close() print('{} - 第{}张下载已完成\n'.format(titles[i],cnt)) cnt+=1 nextPageUrl=re.findall(r'href="(.+?)">下一张',pageText)[0] pageText=getHTMLText(nextPageUrl) downUrl=re.findall(r'href="(.+?)" class="">下载图片',pageText)[0] returndef main(): name=input("请输入你喜欢的明星的名字:") nameUrl="http://www.win4000.com/mt/"+''.join(lazy_pinyin(name))+".html" try: text=getHTMLText(nameUrl) if not re.findall(r'暂无(.+)!',text): root = "D://pics//"+name+"//" if not os.path.exists(root): os.mkdir(root) downPictures(text,root,name) try: nextPage=re.findall(r'next" href="(.+)"',text)[0] while(nextPage): nextText=getHTMLText(nextPage) downPictures(nextText,root,name) nextPage=re.findall(r'next" href="(.+)"',nextText)[0] except IndexError: print("已全部下载完毕") except TypeError: print("不好意思,没有{}的照片".format(name)) returnif __name__ == '__main__': main()
阅读全文
0 0
- 爬虫实战——批量爬取明星图片(http://www.win4000.com/)
- 爬取http://www.hack-cn.com
- python爬虫实战 | 批量爬取开放服务器的文件
- http://www.cn360cn.com/ 抓取分类爬虫
- 爬虫实战2—动态网页的爬取
- 爬虫实战(1)——爬取校内网招聘信息的名称
- python爬虫实战(2)——爬取腾讯新闻
- 爬虫实战爬取数据
- Python3批量爬取网页图片(小爬虫)
- 爬取新浪博客http://www.jianshu.com/p/7c5a4d7545ca
- Python爬虫实战(1):爬取糗事百科段子
- Python爬虫实战(1):爬取糗事百科段子
- Python3.X 爬虫实战(并发爬取)
- Python3.X 爬虫实战(动态页面爬取解析)
- Python3.X 爬虫实战(并发爬取)
- python3爬虫实战(一)爬取创业邦创投库
- 小白Python3爬虫—简介www和http(一)
- Python3 大型网络爬虫实战 003 — scrapy 大型静态图片网站爬虫项目实战 — 实战:爬取 169美女图片网 高清图片
- OpenMP、MPI 和 MapReduce 对比
- 2017年10月16日面试总结
- 3335 数据结构实验之栈与队列八:栈的基本操作
- 第四次作业
- 【spring源码分析】之启动
- 爬虫实战——批量爬取明星图片(http://www.win4000.com/)
- Java面试题
- IE8浏览器下dom元素不区分name属性大小写问题
- 2017.10.16总结
- 1479 数据结构实验之栈与队列九:行编辑器
- Linux之redhat初学者基本指令教程(三)——vim教程
- nutch solr系列之(一)win7下安装nutch solr
- Spring框架IOC理解
- 每天一个linux命令(9):touch 命令