今天我们准备使用爬虫来爬取一些图片首先我们找到其url页面
https://pvp.qq.com/web201605/wallpaper.shtml,进入之后当我们点击跳转页面的时候,发现其上方的网址没有发生变化,如果不发生变化的话就不可以进行翻页操作,于是我们找到源代码,发现源码下面竟然没有任何的数据。于是我们猜想可能是把它藏到了别的地方于是我们点击后台network,找到了这个:
workList_inc.cgi?activityId=2735&sVerifyCode=ABCD&…26
然后我们继续点击他的response,看到里面的json文件,并在json.cn中对其进行了解析,我们发现确实把信息都藏在了这里。包括翻页、对应的图片等。
但是我们发现这些照片的url是经过加密的,所以我们要对其进行解析,parse解密。于是我们现在可以获取到网页的翻页信息,同时也可以找到网页中壁纸的url,那么我们就开始本次爬虫:
import requests
from urllib import parse
from urllib import request #对照片进行下载需要的库
import os #对文件的操作库
headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36',
}#首先我们找到headers
def explanin_data(data):#解码函数
image_urls=[]
for x in range(1,9):#因为一张图对应八张分辨率不同的图片且都需要解码
image_url= parse.unquote(data['sProdImgNo_%d'%x]).replace('200','0')
#这里将url中的x由200替换成0 表示获取到高清壁纸
image_urls.append(image_url)
return image_urls
def main():
for page in range(9):#我们只爬取9页,可以自由调节
page_url=f'https://apps.game.qq.com/cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi?activityId=2735&sVerifyCode=ABCD&sDataType=JSON&iListNum=20&totalpage=0&page={page}&iOrder=0&iSortNumClose=1&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&_=1649850019827'
resp=requests.get(page_url,headers=headers)
#访问网页源码
result=resp.json()
#json一下,变成json格式
datas=result['List']
#找到result中的List标签,照片信息全部在这里
for data in datas:
image_urls=explanin_data(data)
#对照片解码并替换成高清
name=parse.unquote(data['sProdName'])
#对文件名字进行解码
dirpath=os.path.join('image',name)
#os文件操作,文件明的拼接
os.mkdir(dirpath)
#创建文件
for index,image_url in enumerate(image_urls):
#重要的函数enumerate!!!! 可同时提取索引和内容
request.urlretrieve(image_url,os.path.join(dirpath,"%d.jpg"%(index+1)))#进行下载
print('%s下载完成'%image_url)
if __name__ == '__main__':
main()
这就是我们本次爬虫的全部内容,其中确实有很多很多内容需要学习,我们要知其所以然,感谢各位大佬得观看,看完了麻烦点个赞,谢谢大家啦!