如何从网页中使用Python3进行文件的探索和下载

2024-04-19 10:26:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我用每个python版本代码创建了这个GitHub存储库,以防你们检查当前代码。你知道吗

https://github.com/AndresUrregoAngel/Python3-request/tree/current

我在python2中有一个脚本,可以使用lib2和其他模块从一个页面登录、浏览和下载几个文件。我想使用请求模块将这个脚本迁移到pythonv3。不幸的是,我没有做到这一点,因为我无法打开会话来浏览页面,然后下载文件。请检查脚本,让我知道我怎么能弄清楚。你知道吗

Python2

import os
import time
import urllib
import urllib2
import cookielib
import datetime

# Here are your queue names
QUEUES = {'dis0003': ['dis0003-xxxxxxx', 'dis0003-yyyyyy',
                      'dis0003-zzzzzzzz'],
          'dis0006': ['dis0006-xxxxxxx', 'dis0006-yyyyyyyy',
                      'dis0006-zzzzzzzz',
                      'dis0006-mmmmmmm',
                      'dis0006-nnnnnnnnnn']}


# Your admin login and password
LOGIN = "xxx"
PASSWORD = "xxxxx"
ROOT = "https://xxxxx"


# The client have to take care of the cookies.
jar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))

# POST login query on '/login_handler' (post data are: 'login' and 'password').
req = urllib2.Request(ROOT + "/login_handler",
                      urllib.urlencode({'login': LOGIN,
                                        'password': PASSWORD}))
opener.open(req)

# Set the right accountcode

for accountcode, queues in QUEUES.items():
    req = urllib2.Request(ROOT + "/switch_to/" + accountcode)
    opener.open(req)

    NOW = datetime.datetime.now()
    YEAR = NOW.year
    FROM_MONTH = NOW.month
    TO_MONTH = NOW.month
    FROM_DAY = NOW.day
    TO_DAY = NOW.day

    from_ts = time.mktime(datetime.datetime(
        YEAR, FROM_MONTH, FROM_DAY).timetuple())
    to_ts = time.mktime(datetime.datetime(
        YEAR, TO_MONTH, TO_DAY).timetuple())

    # Get the CSV and write it to files
    for queue in queues:
        url = "%s/queue/csv/stats/%s/%s/%s" % (
            ROOT, queue, int(from_ts), int(to_ts))
        sections = []
        section = []
        for line in opener.open(urllib2.Request(url)).read().split('\n'):
            if line:
                section.append(line)
            else:
                sections.append(section)
                section = []
        if section:
            sections.append(section)
        for i, section in enumerate(sections):
            open(os.path.join("file", "%s-%d.csv" % (queue, i + 1)),
                 "wb").write('\n'.join(section))

Tags: toimportfordatetimequeueloginsectionroot