上一次写了一篇爬取百度图片的简单爬虫python3 requests库实现多图片爬取,而这一次选择了爬全景网得图片,大家可以打开全景网看看网页源代码,遍历发现压根看不到图片得url在哪,说实话,真实采用脚本的办法我也爬不到,技术还没到家啊,所以我就去寻找。
首先,我还是检查元素,然后下拉
一无所获,然后就想着点开下一页看看,发现并没有什么,于是就在上面的All,XHR标签下查看,终于我发现js下有点不同
于是我再点下一页,神奇的事情出现了
赶紧看看两个有什么不同,然后得出的结论是
第一页Requests URL:http://search.quanjing.com/search?key=%E5%94%AF%E7%BE%8E&pageSize=200&pageNum=1&imageType=2&sortType=1&callback=searchresult&_=1499995784330
第二页是:http://search.quanjing.com/search?key=%E5%94%AF%E7%BE%8E&pageSize=200&pageNum=2&imageType=2&sortType=1&callback=searchresult&_=1499995784329
神奇的发现,只有pagenum不一样(searchresult后面的部分对url不影响),而且数值跟当前页数一样,好啦,点进去看看
报告,发现目标,检查后,正确无误,发现过程到此为止,剩下就是十分简单的代码了,下面附上我的代码:
"""
Created on Fri Jul 14 08:28:41 2017
@author: 辉哥
"""
import requests
import re
import os
import time
dirs=input('请输入文件夹名称:')
robot='C:/Users/lenovo/Desktop/'+dirs+'/'
kv={'user-agent':'Mozilla/5.0'}
def getHTMLText(url):
try:
r=requests.get(url,timeout=30)
r.raise_for_status()
r.encoding=r.apparent_encoding
return r.text
except:
return ''
def parseHTML(html):
pattern=r'"imgurl":"(.*?)"'
reg=re.compile(pattern)
urls=reg.findall(html)
return urls
def getmoreURL(word,num):
more_urls=[]
url='http://search.quanjing.com/search?key={word}&pageSize=200&pageNum={num}&imageType=2&sortType=1&callback=searchresult'
for i in range(1,num+1):
more_url=url.format(word=word,num=i)
more_urls.append(more_url)
return more_urls
def download(urls):
for url in urls:
try:
r=requests.get(url,timeout=30,headers=kv)
r.raise_for_status()
path=robot+url.split('/')[-2]+url.split('/')[-1]
if not os.path.exists(robot):
os.makedirs(robot)
if not os.path.exists(path):
with open(path,'wb') as f:
f.write(r.content)
f.close()
print(path+'保存成功')
else:
print('文件已存在')
except:
continue
def main():
word=input('输入搜索标题:')
num=int(input('输入搜索页数:'))
urls=getmoreURL(word,num)
for url in urls:
html=getHTMLText(url)
imgurls=parseHTML(html)
download(imgurls)
time.sleep(3)
main()
以上代码采用的是python3.5,使用requests库,re模块,以及os模块
同样希望大佬指出不足之处,小弟在此谢过!