鱼C论坛

 找回密码
 立即注册
查看: 1653|回复: 0

[技术交流] 动态加载--懒加载----站长素材

[复制链接]
发表于 2019-4-14 03:59:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Stubborn 于 2019-4-14 04:02 编辑

举个栗子把,京东,当你打开界面往下滑动的时候,一些内容或者图片才会加载出来,借此提升“渲染速度”,增强用户体验。并不是你请求一瞬间一股脑字全部甩给你的。
这里以站长素材为例。
  1. # -*- coding:utf-8 -*-
  2. # @Time    : 2019-04-07 16:44
  3. # @Author  : Ein
  4. # @File    : 懒加载-站长素材.py
  5. # @Software: PyCharm
  6. from urllib import request
  7. from lxml import etree
  8. import os,time
  9. import urllib


  10. def handle_reuqest(url,page):

  11.     if page == 1:
  12.         url = url.format('')
  13.     else:
  14.         url = url.format('_'+str(page))

  15.     headers = {
  16.         'User - Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
  17.     }
  18.     response = request.Request(url=url,headers=headers)
  19.     return response


  20. def download_img(imgsrc):
  21.     dirpath = "性感"
  22.     #创建文件名字
  23.     if not os.path.exists(dirpath):
  24.         os.mkdir(dirpath)
  25.     #文件名
  26.     filename = os.path.basename(imgsrc)
  27.     #图片路径
  28.     filepath = os.path.join(dirpath,filename)
  29.     #发送请求保存图片
  30.     reque = request.Request(url=imgsrc)
  31.     response = request.urlopen(reque)
  32.     with open(filepath,'wb') as fp:
  33.         fp.write(response.read())


  34. def parse_connt(connt):
  35.     tree = etree.HTML(connt)
  36.     img_list = tree.xpath("//div[@id='container']/div/div/a/img/@src2")
  37.     '''懒加载技术:用到的再加载
  38.             实现方式:
  39.                 <img src2 = '图片路径'>  通过js动态的添加
  40.                 <img src = '图片路径' src2=''>
  41.     如上的img_list是图片链接,下载保存即可
  42.     '''
  43.     for img_src in img_list:
  44.         download_img(img_src)




  45. def main():
  46.     url = 'http://sc.chinaz.com/tupian/xingganmeinvtupian{}.html'

  47.     for page in range(1,2):
  48.         response = handle_reuqest(url,page)
  49.         connt = request.urlopen(response).read().decode()
  50.         parse_connt(connt)
  51.         time.sleep(2)



  52. if __name__ == '__main__':
  53.     main()
复制代码

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-26 06:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表