python抓取图片
爬取单张图片
获取单张图片主要是定位到此图片的真实url,采用基本的写入文件方式即可把图片保存到本地
import requests
url = \'http://pic-bucket.ws.126.net/photo/0003/2020-10-18/FP72BDU900AJ0003NOS.jpg\'
resp = requests.get(url).content
with open(\'F:\\BeautifulPictures\my.jpg\', \'wb\') as a:
a.write(resp)
with open(\'test.txt\',\'r\') as f:
str = f.read()
print(str)
print(\'111\')
print(str)``
爬取整个网页的图片
获取整个网页的图片,第一步是分析网页图片的展示方式:有一次性加载全部图片的模式;也有逐步加载的模式。第一种模式比较好获取页面中的所有图片,查看源代码的方式可以看到所有图片
的标签信息,根据标签的规律可以直接全部提取出来,然后遍历出图片即可;第二种模式相对来说困难一点,需要借助F12功能,分析出请求图片的真实url,比如网站”https://pic.sogou.com/“
上有很多美女图片,但是源代码里面啥图片信息也没有,当使用F12功能时,你会发现真正去请求图片地址的url是”https://pic.sogou.com/pic/action/getWapHomeFeed.jsp?key=homeFeedData&category=feed&start=0&len=10“。它还带了一些参数,你可以改变一下参数试试效果,比如len改成50看看。通过分析可以看到下面这个数据返回结构
import requests
import json
import urllib
def getSogouImag():
path = "F:/BeautifulPictures/"
imgs = requests.get(\'https://pic.sogou.com/pic/action/getWapHomeFeed.jsp?key=homeFeedData&category=feed&start=0&len=10\')
jd = json.loads(imgs.text)
jd = jd[\'list\']
count1 = 1
for array1 in jd:
dir1 = array1[0][\'category\'] + str(count1)
print(\'1\'+dir1)
print(array1)
count2 = 1
count1 = count1 + 1
for array2 in array1:
dir2 = array2[\'category\'] + str(count2)
print(\'2\'+dir2)
print(array2)
count2 = count2 + 1
imgs_url = []
m = 0
for array3 in array2[\'picList\']:
print(\'3\')
print(array3)
imgs_url.append(array3[\'originImage\'])
for img_url in imgs_url:
print(\'***** \' + dir1 + dir2 + str(m) + \'.jpg *****\' + \' Downloading...\')
urllib.request.urlretrieve(img_url, path + dir1 + dir2 + str(m) + \'.jpg\')
m = m + 1
getSogouImag()
代码运行后,抓取的图片保存到本地后的结果如下:,注意这是参数为10的结果,因为是动态加载可以把参数调整到50后再看看效果,由于图片实在太多就不截图了。