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 相关文章推荐
Eclipse + Python 的安装与配置流程
Mar 05 Python
python中子类调用父类函数的方法示例
Aug 18 Python
python 全局变量的import机制介绍
Sep 07 Python
Python之多线程爬虫抓取网页图片的示例代码
Jan 10 Python
Python使用reportlab模块生成PDF格式的文档
Mar 11 Python
Python使用修饰器进行异常日志记录操作示例
Mar 19 Python
python lambda表达式(匿名函数)写法解析
Sep 16 Python
pycharm中import呈现灰色原因的解决方法
Mar 04 Python
Django自带用户认证系统使用方法解析
Nov 12 Python
python如何发送带有附件、正文为HTML的邮件
Feb 27 Python
Python实现制作销售数据可视化看板详解
Nov 27 Python
python库Tsmoothie模块数据平滑化异常点抓取
Jun 10 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
Terran兵种介绍
2020/03/14 星际争霸
使用 MySQL 开始 PHP 会话
2006/12/21 PHP
php中$this->含义分析
2009/11/29 PHP
用PHP来计算某个目录大小的方法
2014/04/01 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
Prototype Function对象 学习
2009/07/12 Javascript
读jQuery之六 缓存数据功能介绍
2011/06/21 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
2015/08/24 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
JS组件Bootstrap Table使用方法详解
2016/02/02 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
实现高性能javascript的注意事项
2019/05/27 Javascript
js实现3D旋转相册
2020/08/02 Javascript
python实现代理服务功能实例
2013/11/15 Python
Python入门篇之列表和元组
2014/10/17 Python
python随机生成指定长度密码的方法
2015/04/04 Python
python奇偶行分开存储实现代码
2018/03/19 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
python如何支持并发方法详解
2020/07/25 Python
Python如何将将模块分割成多个文件
2020/08/04 Python
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
美国基督教约会网站:ChristianCafe.com
2020/02/04 全球购物
SQL注入攻击的种类有哪些
2013/12/30 面试题
水果连锁超市创业计划书
2014/01/24 职场文书
2014年小班元旦活动方案
2014/02/16 职场文书
庆元旦迎新年广播稿
2014/02/18 职场文书
2014年信用社工作总结
2014/11/25 职场文书
团员个人年度总结
2015/02/26 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
导游词之张家界
2019/10/31 职场文书
JavaScript小技巧带你提升你的代码技能
2021/09/15 Javascript
Docker下安装Oracle19c
2022/04/13 Servers