Как загрузить много файлов PDF с помощью API Всемирного банка от Python - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь загрузить многие PDF-файлы (несколько сотен) с веб-сайта архива Всемирного банка, используя Python. Веб-ссылку API можно настроить с использованием любого выбора терминов (например, страна или сектор - образование, здравоохранение и т. Д.).

Я попробовал следующий код, используя упомянутый URL, чтобы загрузить файлы, относящиеся к сектору образования во Вьетнаме. URL содержит рабочий документ со всеми PDF-ссылками с указанными условиями. Тем не менее, файлы не могут быть загружены.

import requests
from urllib.parse import urljoin
from bs4 import BeautifulSoup

url = "http://search.worldbank.org/api/v2/wds?format=json&countcode=VN&majdocty_exact=Publications&teratopic_exact=Education&srt=docdt&order=desc"

#Folder to download the files
folder_location = r'J:\New Volume (B)\pdfs'

response = requests.get(url)
soup= BeautifulSoup(response.text, "html.parser")     
for link in soup.select("a[href$='.pdf']"):
    #Name the pdf files 
    filename = os.path.join(folder_location,link['href'].split('/')[-1])
    with open(filename, 'wb') as f:
        f.write(requests.get(urljoin(url,link['href'])).content)

После запуска кода я не нахожу никаких ошибок, но не могу загрузить и любой файл. Любая помощь будет высоко оценен. Спасибо.

1 Ответ

0 голосов
/ 05 июня 2019

Использовать response.json ();bs4 не нужен

import requests
from urllib.parse import urljoin
from bs4 import BeautifulSoup

url = "http://search.worldbank.org/api/v2/wds?format=json&countcode=VN&majdocty_exact=Publications&teratopic_exact=Education&srt=docdt&order=desc"

#Folder to download the files
folder_location = r'J:\New Volume (B)\pdfs'

response = requests.get(url).json()
for i in response['documents']:
    url=(response['documents'][i].get('pdfurl'))
    if url:
        filename = os.path.join(folder_location,url.split('/')[-1])
        with open(filename, 'wb') as f:
            f.write(requests.get(url).content)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...