赞
踩
1.python3
2.pycharm
3.谷歌浏览器
注:不想深究想直接拿来用的,可以跳过操作步骤,直接看结尾说明,只要是百度图片都是共用的。
(1).打开浏览器,点击百度图片,并搜索,如图:
(2).按F12进入控制台,依次点击Network->XHR,然后鼠标移到有图片的网页上,滑轮向下划几下,会出现acjson关键字的信息,这些就是由js控制生成的网页信息。找出两段带acjson的信息,点开 Headers,找到下面的Query String Paraments,对比该字段下的所有属性,最终找出一个 pn字段,该字段会随着网页下滑而数值增加。So,找到关键字点。
(3).我们可以利用 pn关键字来改变要显示图片次序,比如在网址后加上&pn=120,就表示从第120张图片开始显示,如图:
(4).这一步解决获取图片url的问题:
我们最终找到js中, thumbURL这个字段对应了图片链接,至此准备工作结束。
-
- import re
- import urllib.request
- # 地址直接从浏览器拷过来
- url="https://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&ie=gb18030&word=%B9%C5%B7%E7&fr=ala&ala=1&alatpl=adress&pos=0&hs=2&xthttps=111111&pn=0"
- # 这个步骤可以分为三步(最终获取的是该链接的所有源代码)
- # 解析 urllib.request.urlopen(url)
- # 获取 read()
- # 转换编码 decode()
- html=urllib.request.urlopen(url).read().decode("utf8")
- # print(html)
- # 通过正则表达式,来获取图片链接(步骤二.(4))
- html = re.findall('"thumbURL":"(.*?)"', html, re.S)
- # print(html)
-
- index = 0
- # 保存图片的目录,注意目录不能是不存在的,否则会报错
- localPath = "F:\pythonLX\source\古风\\"
- # 设定只下载1000张,也可设得非常大,获取所有图片
- while index < 1000:
- for imgUrl in html:
- print('正在下载,第%d张:%s' %(index, imgUrl))
- # 将图片写入到本地
- urllib.request.urlretrieve(imgUrl, localPath + "第%d.jpg" % index)
- index += 1
- # 这步得目的就是变更网页地址(通过 pn 关键字),获取新的图片(步骤二.(2),(3))
- url = re.sub("&pn=\d+", "&pn=%d" % index, url)
- print(url)
- html = urllib.request.urlopen(url).read().decode("utf8")
- html = re.findall('"thumbURL":"(.*?)"', html, re.S)
- print("+++++++len:", len(html))
-
本文章的关键点在于 如何获取 改变 网址的关键字,以及获取图片链接, 不过这些都是共用的,如果不想深入了解,有点基础的读者可以直接把代码拿来用也行,只要修改2处即可:
1.初始url
2.保存目录 localPath
就这样了,有不懂的可留言。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。