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 相关文章推荐
构建Python包的五个简单准则简介
Jun 15 Python
apache部署python程序出现503错误的解决方法
Jul 24 Python
Python使用遗传算法解决最大流问题
Jan 29 Python
python 3.6.5 安装配置方法图文教程
Sep 18 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
python dict 相同key 合并value的实例
Jan 21 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
Jun 24 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 26 Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 Python
python 实现控制鼠标键盘
Nov 27 Python
解决pytorch 保存模型遇到的问题
Mar 03 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
Mar 04 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
discuz图片顺序混乱解决方案
2015/07/29 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
2016/10/15 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
2017/08/16 Javascript
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
VUEX采坑之路之获取不到$store的解决方法
2019/11/08 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
2020/06/05 Javascript
python利用高阶函数实现剪枝函数
2018/03/20 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
python进度条显示之tqmd模块
2020/08/22 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
信息专业本科生个人的自我评价
2013/10/28 职场文书
会计专业毕业生求职信分享
2014/01/03 职场文书
消防应急演练方案
2014/02/12 职场文书
学校元旦晚会方案
2014/02/19 职场文书
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
反腐倡廉演讲稿
2014/05/22 职场文书
四则混合运算教学反思
2016/02/23 职场文书
小学语文教学反思范文
2016/03/03 职场文书