python3 requests库实现多图片爬取

来源:互联网 发布:linux ntp 开机启动 编辑:程序博客网 时间:2024/05/29 07:16

        最近对爬虫比较感兴趣,所以就学了一下,看人家都在网上爬取那么多美女图片养眼,我也迫不及待的试了一下,不多说,切入正题。

        其实爬取图片和你下载图片是一个样子的,都是操作链接,也就是url,所以当我们确定要爬取的东西后就要开始寻找url了,所以先打开百度图片搜一下(原谅我),大笑

然后使用浏览器F12进入开发者模式,或者右键检查元素


注意看xhr,点开观察有什么不一样的(如果没有xhr就在网页下滑)

第一个是这样的


第二个是这样的


注意看,pn是不是是30的倍数,而此时网页图片的数量也在增多,发现了这个,进url看一下,首先看原网页源码

view-source:http://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=index&fr=&hs=0&xthttps=111121&sf=1&fmq=&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=%E7%BE%8E%E5%A5%B3&oq=%E7%BE%8E%E5%A5%B3&rsp=-1

再看看两个Requests URL的页面,发现都是这样的


不用管他,找我们要的信息,ObjURL,"ObjURL":"http:\/\/image.tianjimedia.com\/uploadimages\/2015\/131\/34\/545szi3x5s84_680x500.jpg"

就是这个,好,现在东西都找到在哪了,写程序咯

import reimport requestsimport osname=input('输入文件夹名称:')robot='C:/Users/lenovo/Desktop/'+name+'/'kv={'user-agent':'mozilla/5.0'}#获取url对应的源码页面def getHTMLText(url):    try:        r=requests.get(url,timeout=30,headers=kv)        r.raise_for_status()        r.encoding=r.apparent_encoding        return r.text    except:        return ''#解析url源码页面def parserHTML(html):#正则表达式为获取ObjURL    pattern=r'"ObjURL":"(.*?)"'    reg=re.compile(pattern)    urls=re.findall(reg,html)    return urls#下载图片def download(List):    for url in List:        try:            path=robot+url.split('/')[-1]            url=url.replace('\\','')            r=requests.get(url,timeout=30)            r.raise_for_status()            r.encoding=r.apparent_encoding            if not os.path.exists(robot):                os.makedirs(robot)            if not os.path.exists(path):                with open(path,'wb') as f:                    f.write(r.content)                    f.close()                    print(path+' 文件保存成功')            else:                print('文件已经存在')        except:            continue#通过Requests URL请求到更多的url源码页面def getmoreurl(num,word):    ur=[]    url=r'http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord={word}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word={word}&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&cg=girl&pn={pn}&rn=30'    for x in range(1,num+1):#word为搜索关键词,num为想获取的页面数量        u=url.format(word=word,pn=30*x)        ur.append(u)    return ur    def main():    n=int(input('输入想下载多少张图片(n*30):'))    word=input('输入想下载的图片:')#初始页面url    url='http://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1499773676062_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word={word}'.format(word=word)    html=getHTMLText(url)    urls=parserHTML(html)    download(urls)#下面操作获取的更多页面图片    url1=getmoreurl(n,word)    for i in range(n):        html1=getHTMLText(url1[i])        urls1=parserHTML(html1)        download(urls1)main()
然后试一试效果

我知道你们会原谅我的

ps:第一次发帖,不足的地方大佬们指正

阅读全文
1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 光盘放笔记本电脑里读不出来怎么办 cd光盘读不出来怎么办 最近脸干的不行怎么办 脸感觉干的不行怎么办 新生儿睡觉黑白颠倒了怎么办 婴儿吐水和奶花怎么办 刚刚出生的宝宝拉肚子怎么办 刚出生的婴儿拉肚子怎么办 新生儿5天拉稀水怎么办 10个月孩子拉肚子怎么办 不满月的宝宝拉肚子怎么办 一周岁宝宝发烧腹泻呕吐怎么办 6个月宝宝37度怎么办 1岁宝宝发烧37.2怎么办 新生儿发烧37度3怎么办 两个月宝宝抵抗力差怎么办 6月宝宝着凉拉稀怎么办 六个月的宝宝拉肚子怎么办 衣服颜色太深了怎么办 一多半宝宝爱喝水不爱吃饭怎么办 十个月宝宝不爱吃饭怎么办 十个月宝宝突然不爱吃饭怎么办 二十个月宝宝不爱吃饭怎么办 十个月的宝宝不爱吃饭怎么办 6年级学生数学差怎么办 打印机打不出来就是一张白纸怎么办 wps表格下拉数字不递增怎么办 wps表格圈怎么打出来怎么办 手表固定圈掉了怎么办 起来觉得头晕头胀怎么办? 孩子不好好写作业怎么办 孩子考试考差了怎么办 孩子计算题马虎大意怎么办 二年级孩子不认字怎么办 发现计算上的错误怎么办 孩子不好好做作业怎么办 手破了红肿了怎么办呢 老师反应孩子在校粗心胆小怎么办 四年级的学生计算粗心怎么办 老打孩子骂孩子怎么办 站久了脚肿了怎么办