这是一个免费下载图片的网站https://pixabay.com
这个网站有很多免费下载的图片我比较喜欢,一张一张下载我也懒得戳鼠标,所以我先搜索到我喜欢的图片分类,然后发现在doc里面的html文件找不到图片链接,于是判断图片是通过ajax加载上的,又去找xhr,终于在里面发现了所有的requests url跟正常网站的不一样
分析链接https://pixabay.com/zh/photos/hp=&image_type=&cat=&min_width=&min_height=&q=%E8%87%AA%E7%84%B6%E9%A3%8E%E5%85%89&order=popular,?后面的是我搜索的关键词,于是我就拿着这个当请求url试了一下,惊奇的发现这竟然就是图片链接所在的响应界面,这下被我找到了,于是我就把所有img标签的src拿出来正当我暗自庆幸拿到图片链接的时候,往下瞄了一眼发现不大对,只有前几个正常,后面全是假的数据!!!
我又跳过前面几条数据,从后面发现原来真正的数据不再src里,而是在data-lazy和data-lazy-srcset里面
于是我就修改了一下总算找到了真正的数据,把所有链接提取出来,然后把图片保存到自己想存的地方就可以了,大功告成
贴代码
import requests
import json
import os
from bs4 import BeautifulSoup
import http.cookiejar as cookielib
class pic_spyder(object):
def __init__(self,url,header,data,proxies):
self.url=url
self.headers=header
self.data=data
self.session=requests.session()
self.proxies=proxies
def connect_get(self):
self.session.cookies=cookielib.LWPCookieJar(filename='pic_cookies')
if not os.path.exists('pic_cookies'):
self.r=self.session.get(self.url,headers=self.header,params=self.data)
self.session.cookies.save(ignore_discard=True,ignore_expires=True)
else:
self.session.cookies.load(ignore_discard=True)
print('cookies login')
if(self.data == None):
self.r=self.session.get(self.url,headers=self.headers)
else:
self.r=self.session.get(self.url,headers=self.headers,params=self.data)
return self.r
def get_data(self,r):
self.soup=BeautifulSoup(r,'lxml')
return self.soup
url='https://pixabay.com/zh/photos/?hp=&image_type=&cat=&min_width=&min_height=&q=%E8%87%AA%E7%84%B6%E9%A3%8E%E5%85%89&order=popular'
header={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36'
}
proxies = {
"http": "http://121.232.144.186:9000",
"https": "http://121.232.144.186:9000"
}
spyder=pic_spyder(url,header,None,proxies)
r=spyder.connect_get()
soup=spyder.get_data(r.text)
list=[d.get('data-lazy') for d in soup.select('img')[6:]]
print(list)

本文介绍了如何使用Python爬虫从Pixabay网站下载免费图片。作者通过分析网站请求,发现图片链接隐藏在data-lazy和data-lazy-srcset属性中,并提供了提取和保存图片的代码。
580

被折叠的 条评论
为什么被折叠?



