Чтобы использовать BeautifulSoup, сначала нужно понять, как структурирован исходный код HTML.Вы можете найти некоторые основные учебники по этому вопросу с помощью простого поиска в Google.
Но самое основное состоит в том, что HTML-код содержит элементы с tags
, а эти теги имеют attributes
.Вещи, которые вы ищете, находятся под тегами <a>
с соответствующей ссылкой в качестве атрибута href
.Поэтому нам нужно найти все теги <a>
с атрибутом href
с расширением Excel xls
.
. Это можно увидеть, проверив страницу (щелкните правой кнопкой мыши на странице и выберитеОсмотрите, или ctrl-shift-I, чтобы открыть панель инструментов разработчика. Затем вы можете щелкнуть вокруг, чтобы найти нужные вам детали с соответствующим HTML-кодом) и просмотреть источник HTML:
После того, как они у вас есть, вы будете перебирать их, чтобы открывать и сохранять.Мы также сделаем это только для тех, в которых «Supplement: Worldwide Public Tables» находится в тексте / контенте для этого тегового элемента.
Просто убедитесь, что выбрали правильный корневой каталог, где вы хотите сохранить его, где написано output = open('C:/path/to/desktop/' + filename, 'wb')
:
import os
import requests
from bs4 import BeautifulSoup
desktop = os.path.expanduser("~/Desktop")
url = 'https://www.ici.org/research/stats'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
excel_files = soup.select('a[href*=xls]')
for each in excel_files:
if 'Supplement: Worldwide Public Tables' in each.text:
link = 'https://www.ici.org' + each['href']
filename = each['href'].split('/')[-1]
if os.path.isfile(desktop + '/' + filename):
print ('*** File already exists: %s ***' %filename)
continue
resp = requests.get(link)
output = open(desktop + '/' + filename, 'wb')
output.write(resp.content)
output.close()
print ('Saved: %s' %filename)