#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()#开启则运行爬取任务
近期热议
推荐标签 标签
-
React
192 引用 • 291 回帖 • 402 关注
React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。
-
Pipe
131 引用 • 1114 回帖 • 131 关注
Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。
这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!
-
前端
247 引用 • 1347 回帖
前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。
-
小薇
34 引用 • 467 回帖 • 740 关注
小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。
由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!
-
正则表达式
31 引用 • 94 回帖 • 1 关注
正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。
-
招聘
190 引用 • 1057 回帖 • 1 关注
哪里都缺人,哪里都不缺人。
-
Spark
74 引用 • 46 回帖 • 561 关注
Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。
-
面试
325 引用 • 1395 回帖
面试造航母,上班拧螺丝。多面试,少加班。
-
MyBatis
170 引用 • 414 回帖 • 383 关注
MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。
-
Postman
4 引用 • 3 回帖 • 2 关注
Postman 是一款简单好用的 HTTP API 调试工具。
-
知乎
10 引用 • 66 回帖
知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。
-
互联网
98 引用 • 344 回帖
互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。
-
JetBrains
18 引用 • 54 回帖
JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA。
-
SendCloud
2 引用 • 8 回帖 • 478 关注
SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。
-
SEO
35 引用 • 200 回帖 • 15 关注
发布对别人有帮助的原创内容是最好的 SEO 方式。
-
Lute
25 引用 • 191 回帖 • 17 关注
Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。
-
DNSPod
6 引用 • 26 回帖 • 505 关注
DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。
-
OnlyOffice
4 引用 • 1 关注
-
SOHO
7 引用 • 55 回帖 • 18 关注
为成为自由职业者在家办公而努力吧!
-
996
13 引用 • 200 回帖 • 2 关注
-
JavaScript
728 引用 • 1326 回帖
JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。
-
GitBook
3 引用 • 8 回帖 • 4 关注
GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。
-
V2EX
17 引用 • 236 回帖 • 335 关注
V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。
-
友情链接
24 引用 • 373 回帖
确认过眼神后的灵魂连接,站在链在!
-
音乐
60 引用 • 511 回帖 • 1 关注
你听到信仰的声音了么?
-
Ruby
7 引用 • 31 回帖 • 212 关注
Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。
-
Rust
58 引用 • 22 回帖 • 4 关注
Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于