python3 requests库实现多图片爬取教程


Posted in Python onDecember 18, 2019

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

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

python3 requests库实现多图片爬取教程

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

python3 requests库实现多图片爬取教程

注意看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 re
import requests
import os
 
name=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()

然后试一试效果

python3 requests库实现多图片爬取教程

我知道你们会原谅我的

以上这篇python3 requests库实现多图片爬取教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
wxpython 最小化到托盘与欢迎图片的实现方法
Jun 09 Python
python正则表达式的使用
Jun 12 Python
Python实现的矩阵类实例
Aug 22 Python
TensorFlow saver指定变量的存取
Mar 10 Python
python操作redis方法总结
Jun 06 Python
使用Python实现在Windows下安装Django
Oct 17 Python
python面试题Python2.x和Python3.x的区别
May 28 Python
python实现截取屏幕保存文件,删除N天前截图的例子
Aug 27 Python
详解Python time库的使用
Oct 10 Python
python topk()函数求最大和最小值实例
Apr 02 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
python生成可执行exe控制Microsip自动填写号码并拨打功能
Jun 21 Python
在notepad++中实现直接运行python代码
Dec 18 #Python
简单了解python装饰器原理及使用方法
Dec 18 #Python
修改Pandas的行或列的名字(重命名)
Dec 18 #Python
Python3直接爬取图片URL并保存示例
Dec 18 #Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 #Python
Python谱减法语音降噪实例
Dec 18 #Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
Dec 18 #Python
You might like
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
php阳历转农历优化版
2016/08/08 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
Javascript基础教程之argument 详解
2015/01/18 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
2015/06/16 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
webpack结合express实现自动刷新的方法
2019/05/07 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
javascript创建元素和删除元素实例小结
2019/06/19 Javascript
python清除字符串里非字母字符的方法
2015/07/02 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
python opencv实现gif图片分解的示例代码
2019/12/13 Python
python判断是空的实例分享
2020/07/06 Python
5款实用的python 工具推荐
2020/10/13 Python
python lambda的使用详解
2021/02/26 Python
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
Expedia英国:全球最大的在线旅游公司
2017/09/07 全球购物
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
结婚喜宴家长答谢词
2014/01/15 职场文书
《雨霖铃》听课反思
2014/02/13 职场文书
院领导写的就业推荐信
2014/03/09 职场文书
商务英语广告词大全
2014/03/18 职场文书
安全责任书范本
2014/04/15 职场文书
挂靠协议书范本
2014/04/22 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
2015年清明节活动总结
2015/02/09 职场文书
2015年教师自我评价范文
2015/03/04 职场文书
通用员工手册范本
2015/05/14 职场文书
永远是春天观后感
2015/06/12 职场文书