美文网首页
python3--有cookie下载网页上的文件

python3--有cookie下载网页上的文件

作者: w_dll | 来源:发表于2020-11-26 05:19 被阅读0次

en....
总的来说,就是把这个网页上的我想要的文件先从html里过滤出来,再下载。
其中访问需要cookie,不能通过get直接访问;
脚本如下

#!/usr/bin/python3
import sys, io, re, os
from urllib import request


def get_download_url(sub_url):
  url_key_pattern = re.compile(r"href=\".*\"")
  url_key = url_key_pattern.findall(str(sub_url))
  url_key_pattern = re.compile(r"\/redmine.*\"")
  url_key = url_key_pattern.findall(str(url_key))
  sub_url = str(url_key[0])
  sub_url = sub_url.split('"')
  sub_url = str(sub_url[0])
  download_url = "http://redmine.springgroup.cn" + sub_url
  return download_url

def get_file_name(sub_url):
  url_key_pattern = re.compile(r"href=\".*")
  url_key = url_key_pattern.findall(str(sub_url))
  this_file_name = str(url_key[0])
  this_key_pattern = re.compile(r"\>.*?\<")
  this_file_name = this_key_pattern.findall(str(this_file_name))
  this_file_name = str(this_file_name[0])
  this_file_name = this_file_name.strip('>,<')
  return this_file_name


def pre_fun(save_dir, redmine_number):
  #浏览器登录后得到的cookie,也就是刚才复制的字符串
  #cookie_str = r'JSESSIONID=xxxxxxxxxxxxxxxxxxxxxx; iPlanetDirectoryPro=xxxxxxxxxxxxxxxxxx'
  cookie_str = r'_redmine_session=ajhuOC9xbG9NaWlyUjJ4RTBzcDF4cjl1SVVzUlF4V1dURitCQ2x1U0FpQ1kva1ZrM1ppZ3FDTjVXbnNkdlNHSld3WCt4UjVIYlFBcFhMd29mTVdTc290ZGk5WGRERzl0RmR6V3VubFMxQkF1VGQvQlVGcHdEZWhkMTJFMzNGbVdQSlhYcnJldG8'
  os.chdir(save_dir)
  if not os.path.isdir(redmine_number):
    os.makedirs(redmine_number)
  os.chdir(redmine_number)
  #登录后才能访问的网页
  redmine_url = 'http://redmine.springgroup.cn/redmine/issues/' + redmine_number

  return redmine_url, cookie_str


def start_download(redmine_url, cookie_str):
  sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码
  req = request.Request(redmine_url)

  #设置cookie
  req.add_header('cookie', cookie_str)
  #设置请求头
  req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36')

  resp = request.urlopen(req)


  #print(resp.read().decode('utf-8'))
  #this_text = resp.read().decode('utf-8')
  while resp:
    li = resp.readline().decode('utf-8')
    if "</html>" in li:
      break
    # 匹配文件名 和 下载 url
    if ("数据库" not in li and "已添加" not in li and "手册" not in li and ".htm" not in li)\
    and ("rar" in li or "zip" in li or "tgz" in li or "tar" in li)\
    and ("href" in li and "download" in li):
      # 文件名
      file_name = get_file_name(li)
      # 下载链接
      download_url = get_download_url(li)

      print("开始下载 %s ..." % (file_name))
      req1 = request.Request(download_url)

      #设置cookie
      req1.add_header('cookie', cookie_str)
      #设置请求头
      req1.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36')

      this_file = request.urlopen(req1)
      data = this_file.read()
      with open(file_name, "wb") as code:
        code.write(data)
      print("ok\n")


if __name__ == '__main__':

  #redmine号码
  redmine_number = '346683'
  #下载存放路径
  save_dir = "/home/xxwdll/soft/nginx/download/tmp"
  redmine_url, cookie_str = pre_fun(save_dir, redmine_number)
  #开始下载
  start_download(redmine_url, cookie_str)

结果如下


相关文章

  • python3--有cookie下载网页上的文件

    en....总的来说,就是把这个网页上的我想要的文件先从html里过滤出来,再下载。其中访问需要cookie,不能...

  • Cookie测试点汇总

    1.禁止使用Cookie设置浏览器禁止使用Cookie,访问网页后,检查存放Cookie文件中未生成相关文件; 2...

  • Cookie、Session和Token介绍

    Cookie Cookie是网页浏览器用来保存用户信息的文件。 HTTP协议是无状态的协议,网页关闭后,浏览器和服...

  • 下载网页上的视频文件

    f12 检查元素 选中视频区域,你可以看到一个文件链接.mp4结尾的,然后选中文件链接复制,新建一个标签页,复制链...

  • Cookie和Session的使用和区别

    Cookie和Session的使用和区别 Cookie中译小甜饼,是网页浏览器用来保存用户信息的文件,可以保存比如...

  • Download Shuttle Pro for Mac 1.1

    Download Shuttle Pro 是一款Mac上优秀的文件和视频下载工具,支持网页文件下载,在线视频等的下...

  • 解密微信数据库

    下载安装sqlcipher,可以使用brew安装 获取自己的uin: 可以通过网页登陆微信,cookie里有uin...

  • day5 - 文件管理 常用命令2

    《 Bash shell 》 文件联网下载--浏览网页资源--文件上传与下载 安装 wget 命...

  • How to do with cookie

    what is cookie对网页端说 cookie是存储于浏览器上的一段字符串。我们通常使用cookie来储存用...

  • UNIX LINUX MACOS shell 下载合并*.ts视

    问题描述: 下载一个网页上的流媒体视频,通过查看发现,网页有个播放列表XXX.m3u8文件,视频为*.ts格式,0...

网友评论

      本文标题:python3--有cookie下载网页上的文件

      本文链接:https://www.haomeiwen.com/subject/fpzoiktx.html