Мне нужно найти способ загрузить все PDF-файлы, которые можно найти по заданному URL-адресу, и я нашел скрипт, который предположительно - я его не проверял - выполняет эту задачу:

import urllib.parse
import urllib2
import os
import sys
from bs4 import BeautifulSoup

from urllib3 import request

url = "https://...."

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0"}

i = 0

request = urlib2.request(url, None, headers)

html = urllib2.urlopen(request)

soup = BeuatifulSoup(html.read())

for tag in soup.findAll("a" , href = True)

    tag["href"] = urlparse.urljoin(url, tag["href"])

    if os.path.splitext(os.path.basename(tag["href"]))[1] == ".pdf"

        current = urllib2.urlopen(tag["href"])

        print("\n[*] Downloading: %s" %(os.path.basename(tag["href"])))

        f = open(download_path + "\\" + os.path.basename(tag["href"], "wb"))

        f.write(current.read())

        f.close()

        i += 1

print("\n[*] Downloaded %d files" %(i + 1))

raw_input("[+] Press any key to exit ... ")

Проблема в том, что у меня установлен Python 3.3, и этот скрипт не работает с Python 3.3. Например. urllib2 недоступен для Python 3.3.

Не могли бы вы посоветовать, как изменить скрипт, чтобы он был совместим с Python 3.3?

Я буду очень благодарен за вашу помощь.

0
user8270077 27 Фев 2018 в 03:42

3 ответа

Лучший ответ

Почему бы не использовать трехстрочный , для которого требуется всего один ?

mech-dump --links http://domain.tld/path |
grep -i '\.pdf$' |
xargs wget -n1

Пакет libwww-mechanize-perl для Debian и производных

1
Gilles Quenot 27 Фев 2018 в 00:46

Почему не одна строка bash: wget -r -l1 -A.pdf http://www.example.com/page-with-pdfs.htm

1
13013SwagR 11 Окт 2018 в 11:52

Как кто-то указал, сценарий оболочки может быть гораздо лучшим способом для достижения ваших целей.

Однако, если вы настроены на использование python для этого, вы можете сохранить вашу среду python 3.3 без изменений и установить так называемую «виртуальную среду». Внутри виртуальной среды вы можете иметь любую версию Python и библиотеки, которые вам нужны, и это не будет мешать вашей текущей установке Python.

здесь есть хороший учебник для начала работы с виртуальной средой. ,

0
John S 27 Фев 2018 в 01:07