Я очень новичок в Python. Я хочу выполнить простое упражнение, в котором я хочу загрузить несколько ссылок из текстового файла. Все файлы представляют собой годовые отчеты в формате TXT. Я также хочу сохранить имя каждой ссылки в качестве имени файла с заменой '/' на '_'. Я пробовал следующее до сих пор. Я не знаю, как открыть текстовый файл с URL-адресами в каждой строке, поэтому я использую список URL-адресов. Но я хочу сделать это правильно. Я знаю, что следующий код совсем не похож на то, что я хочу, но я просто хотел попробовать. Может кто-нибудь, пожалуйста, помогите с этим. Бесконечно благодарен!

    import requests

urllist = ["https://www.sec.gov/Archives/edgar/data/100240/0000950144-94-000787.txt",
"https://www.sec.gov/Archives/edgar/data/100240/0000950144-94-000787.txt",
]

for url in urllist:
    r = requests.get(url)
    with open('filename.txt', 'w') as file:
        file.write(r.text)
1
Mansoor 25 Апр 2020 в 00:27

2 ответа

Лучший ответ

Вы можете попробовать использовать:

import requests

urllist = ["https://www.sec.gov/Archives/edgar/data/100240/0000950144-94-000787.txt",
           "https://www.sec.gov/Archives/edgar/data/100240/0000950144-94-000787.txt" ] # links are the same

for url in urllist:
    r = requests.get(url)
    if r.status_code == 200:
        fn = url.replace("/", "_").replace(":", "_") # on windows, : is not allowed on filenames
        with open(fn, 'w') as file:
            file.write(r.text)

Выход:

https___www.sec.gov_Archives_edgar_data_100240_0000950144-94-000787.txt

Был создан только один файл, потому что ссылки повторяются

0
Pedro Lobito 24 Апр 2020 в 21:37

Если ваши ссылки находятся в файле, скажем, urls.txt, где каждая ссылка в отдельной строке, что вы можете использовать это:

import urllib.request
with open('urls.txt') as f:
    for url in f:
        url = url.replace('\n', '')
        urllib.request.urlretrieve(url , url .replace('/', '_').replace(':', '_'))
0
alextesy 24 Апр 2020 в 21:44