博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python爬取百度搜索图片
阅读量:5047 次
发布时间:2019-06-12

本文共 1543 字,大约阅读时间需要 5 分钟。

在之前通过爬取贴吧图片有了一点经验,先根据之前经验再次爬取百度搜索界面图片

废话不说,先上代码

#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time    : 2017/7/22 10:44# @Author  : wqj# @Contact : wqjhky@gmail.com# @Site    : # @File    : test.py# @Software: PyCharm Community Editionimport requestsimport reimport osurl = r'http://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&ie=gbk&word=%B1%ED%C7%E9%B0%FC&fr=ala&ala=1&alatpl=adress&pos=0&hs=2&xthttps=000000'dirpath = r'D:\img'html = requests.get(url).texturls = re.findall(r'"objURL":"(.*?)"', html)if not os.path.isdir(dirpath):    os.mkdir(dirpath)index = 1for url in urls:    print("Downloading:", url)    try:        res = requests.get(url)        if str(res.status_code)[0] == "4":            print("未下载成功:", url)            continue    except Exception as e:        print("未下载成功:", url)filename = os.path.join(dirpath, str(index) + ".jpg") with open(filename, 'wb') as f: f.write(res.content) index += 1print("下载结束,一共 %s 张图片" % index)

  在爬取得过程中,最先遇到的问题是打开百度图片界面,查看源码,并不能看到img下的src标签,后通过在知乎上查看文章得知百度将图片放在了acjson下,通过来查看

 

进入之后发现其中有较多图片地址,经过验证后发现objURL才是我们需要的标签

这样我们就可以利用python中的requests库来对页面进行解析匹配

其中

try:        res = requests.get(url)        if str(res.status_code)[0] == "4":            print("未下载成功:", url)            continue    except Exception as e:        print("未下载成功:", url)

 

需要我们来判断状态码是否正常,如异常需要捕捉。

基本上这个python程序就算结束了。

不足的地方有很多,譬如只可以抓取首页的30张图片

这是相邻的两个请求,每相邻像个请求之间有30张图片,经过分析我们可以看出来其中只有两个参数发生变化,一个是pn,另一个是

gsm。pn是以30递增的规律,而gsm则无法判断。(刚入python的坑)

所以无法连续抓取。。。

 

转载于:https://www.cnblogs.com/wqja/p/7223693.html

你可能感兴趣的文章
C# Async与Await的使用
查看>>
Mysql性能调优
查看>>
iOS基础-UIKit框架-多控制器管理-实例:qq界面框架
查看>>
javascript学习---BOM
查看>>
IOS-每个程序员的编程之路上都应该看这11本书
查看>>
自定义tabbar(纯代码)
查看>>
extjs fieldset 和 radio
查看>>
小程序底部导航栏
查看>>
Codeforces Gym101505G:Orchard Division(扫描线+线段树第k大)
查看>>
VA插件突然不能使用,彈出“the security key for....”
查看>>
电商常用的正则表达式,字符串,地址操作
查看>>
Tomcat安装配置
查看>>
java获取url中的参数
查看>>
Codeforces Round #285 (Div. 2)C. Misha and Forest(拓扑排序)
查看>>
ibatis学习笔记
查看>>
18-ES6(1)
查看>>
poj1611 简单并查集
查看>>
tensorflow实现迁移学习
查看>>
Ubuntu 14.04下安装CUDA8.0
查看>>
跨平台开发 -- C# 使用 C/C++ 生成的动态链接库
查看>>