全景网图片快到碗里来

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


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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值