#coding:utf-8 #完成通用爬虫,抓取一个页面队列中所有图片 import requests import re import time from bs4 import BeautifulSoup import uuid import urllib import os headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36' } base_url='http://m.17786.com' base_img_url='https://wcyouxi.sc601.com/file/p/20190803/21/ordurlsatqe.jpg' save_path='E:\\360MoveData\Users\Administrator\Pictures\Camera Roll\crawl\meizi\\' def download_detail_url_soup(url,folerName,num): print url,folerName html=requests.get(url, headers=headers, timeout=50) html.encoding = 'utf-8' soup = BeautifulSoup(html.text,"lxml" ,from_encoding='utf-8') print soup.title try: imgs=soup.select('.contimglist')[0].find_all("img", {"src": re.compile(".*\.jpg")}) for img in imgs: # 获取图片下载地址,并下载图片 # dizhi = li.find('img')['src'] base_path=save_path + folerName if not os.path.isdir(base_path): os.mkdir(base_path) # 图片保存地址 bc = base_path +"\\"+str(num)+ str(uuid.uuid4()) + ".jpg" # 下载图片并保存 urllib.urlretrieve(img.get("src"), bc) except: print "下载失败" pass return -1 def getDetailPageInfo(url): # < div class ="page" > # < a href = "17409_2.html" class ="linkpage shpage" > 上一页 < / a > # < a href="17409.html" > 首页 < / a > # < a name="allpage" class ="allpage" > < span class ="nowpage" > 3 < / span > / 18 < / a > # < a href="/rihan/17409_18.html" > 尾页 < / a > # < a href="/rihan/17409_4.html" class ="linkpage" > 下一页 < / a > # < / div > html = requests.get(url, headers=headers, timeout=50) html.encoding = 'utf-8' soup = BeautifulSoup(html.text, "lxml", from_encoding='utf-8') print soup.title print soup.select('.page a') pageInfo={} for page in soup.select('.page a'): if page.text.find("/") != -1: pageInfo['total'] = str(page.text)[page.text.find("/")+1:] print pageInfo url.rfind("/") baseUrl=url[0:url.rindex("/")+1] base_detail_url=url[url.rindex("/")+1:] base_detail_url=base_detail_url[0:base_detail_url.rfind(".")] if base_detail_url.rfind("_")>0: base_detail_url=base_detail_url[0:base_detail_url.rfind("_")] pageInfo['first']=base_detail_url; folderName=soup.title for num in range(int(pageInfo['total'])): if num ==0: detail_html_url= baseUrl+pageInfo['first']+".html" else: detail_html_url= baseUrl+pageInfo['first']+"_"+str(num+1)+".html" download_detail_url_soup(detail_html_url,folderName.string,num+1) def getAllPageInfo(url): # < div class ="page" > # < a href = "17409_2.html" class ="linkpage shpage" > 上一页 < / a > # < a href="17409.html" > 首页 < / a > # < a name="allpage" class ="allpage" > < span class ="nowpage" > 3 < / span > / 18 < / a > # < a href="/rihan/17409_18.html" > 尾页 < / a > # < a href="/rihan/17409_4.html" class ="linkpage" > 下一页 < / a > # < / div > html = requests.get(url, headers=headers, timeout=50) html.encoding = 'utf-8' soup = BeautifulSoup(html.text, "lxml", from_encoding='utf-8') print soup.title print soup.nav print soup.find_all("ul", class_="tag",limit=12)[0] allIndexList=[] allIndexList.append('/meinv/'); allIndexList.append('/mxmn/'); for index in soup.find_all("ul", class_="tag",limit=12)[0].find_all("li"): allIndexList.append(index.find("a").get("href")) allDetailPageInfos=[] for detailCrawUrl in allIndexList: detail_crawl_url=base_url+detailCrawUrl print detail_crawl_url htmla = requests.get(detail_crawl_url, headers=headers, timeout=50) htmla.encoding = 'utf-8' soupa = BeautifulSoup(htmla.text, "lxml", from_encoding='utf-8') print soupa.title for detailPageInfo in soupa.find("div",attrs={'id':'list'}).find_all("li"): getDetailPageInfo(base_url+detailPageInfo.find("a").get("href")) if __name__ == '__main__': print "begin" # push_redis_list(6952)#开启则加任务队列.其中的值请限制在5400以内。不过是用于计算页码的 # push_index_all_url_to_redis_list()#//从首页爬取所有url # detail_url='http://m.772586.com/mxmn/17313.html' # detail_url='http://m.772586.com/rihan/17409_5.html' # download_detail_url_soup(detail_url,"test") # getDetailPageInfo(detail_url) detail_url = 'http://m.772586.com/' getAllPageInfo(detail_url); #get_big_img_url()#开启则运行爬取任务
近期热议
推荐标签 标签
-
运维
151 引用 • 257 回帖 • 1 关注
互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。
-
Scala
13 引用 • 11 回帖 • 159 关注
Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。
-
机器学习
83 引用 • 37 回帖
机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
-
Q&A
9645 引用 • 43860 回帖 • 93 关注
提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。
-
Gzip
9 引用 • 12 回帖 • 165 关注
gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。
-
招聘
189 引用 • 1057 回帖 • 4 关注
哪里都缺人,哪里都不缺人。
-
Markdown
170 引用 • 1529 回帖
Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。
-
HBase
17 引用 • 6 回帖 • 60 关注
HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。
-
强迫症
15 引用 • 161 回帖
强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。
-
etcd
6 引用 • 26 回帖 • 547 关注
etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。
-
Notion
10 引用 • 77 回帖 • 1 关注
Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.
-
Openfire
6 引用 • 7 回帖 • 105 关注
Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。
-
ngrok
7 引用 • 63 回帖 • 649 关注
ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。
-
深度学习
54 引用 • 41 回帖
深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。
-
Flume
9 引用 • 6 回帖 • 652 关注
Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。
-
JVM
180 引用 • 120 回帖
JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。
-
CloudFoundry
5 引用 • 18 回帖 • 177 关注
Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。
-
域名
44 引用 • 208 回帖 • 3 关注
域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。
-
Visio
1 引用 • 2 回帖 • 4 关注
-
BookxNote
1 引用 • 1 回帖 • 2 关注
BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。
笔记整理交给我,一心只读圣贤书。
-
Bug
76 引用 • 1742 回帖
Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。
-
AngularJS
12 引用 • 50 回帖 • 507 关注
AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。
-
叶归
5 引用 • 16 回帖 • 11 关注
-
jsDelivr
5 引用 • 31 回帖 • 111 关注
jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。
-
Shell
124 引用 • 74 回帖 • 1 关注
Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。
-
七牛云
28 引用 • 226 回帖 • 132 关注
七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。
- 链书
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于