首页 » Python » 全景网图片快到碗里来

全景网图片快到碗里来

原文 http://blog.csdn.net/small_brother/article/details/75095773

2017-07-14 11:20:17阅读(194)

        上一次写了一篇爬取百度图片的简单爬虫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模块


同样希望大佬指出不足之处,小弟在此谢过!

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹