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的Django框架的运行方式及处理流程
Apr 08 Python
Windows中安装使用Virtualenv来创建独立Python环境
May 31 Python
用python写扫雷游戏实例代码分享
May 27 Python
对python For 循环的三种遍历方式解析
Feb 01 Python
对Python3使运行暂停的方法详解
Feb 18 Python
简单了解python变量的作用域
Jul 30 Python
基于TensorFlow常量、序列以及随机值生成实例
Jan 04 Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 Python
Python 数据的累加与统计的示例代码
Aug 03 Python
基于Python爬取素材网站音频文件
Oct 21 Python
解决pytorch-gpu 安装失败的记录
May 24 Python
pytorch 实现在测试的时候启用dropout
May 27 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
PHP操作文件方法问答
2007/03/16 PHP
PHP 面向对象 PHP5 中的常量
2010/05/05 PHP
PHP面向对象——访问修饰符介绍
2012/11/08 PHP
php获取新浪微博数据API实例
2013/11/12 PHP
yii使用activeFileField控件实现上传文件与图片的方法
2015/12/28 PHP
php ajax实现文件上传进度条
2016/03/29 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
什么是json和jsonp,jQuery json实例详详细说明
2012/12/11 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
2014/06/12 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
NodeJs之word文件生成与解析的实现代码
2019/04/01 NodeJs
vue指令做滚动加载和监听等
2019/05/26 Javascript
简单了解vue.js数组的常用操作
2019/06/17 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
2019/10/12 Javascript
使用Python的Twisted框架编写非阻塞程序的代码示例
2016/05/25 Python
基于Python __dict__与dir()的区别详解
2017/10/30 Python
PyQt5实现拖放功能
2018/04/25 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
施华洛世奇英国官网:SWAROVSKI英国
2017/03/13 全球购物
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
三只松鼠官方旗舰店:全网坚果销售第1
2017/11/25 全球购物
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
幼儿园中班区域活动总结
2014/07/09 职场文书
公务员培的训心得体会
2014/09/01 职场文书
学习教师法的心得体会
2014/09/03 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
晚会主持人开场白台词
2015/05/28 职场文书
雨雪天气温馨提示
2015/07/15 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript