Я новичок в мире python, и я хочу заниматься очисткой веб-страниц.
Я хочу загрузить некоторые документы xls со следующего веб-сайта в определенную папку. (например, рабочий стол)
Не могли бы вы помочь мне с этим?
Сайт
https://www.ici.org/research/stats
Я пробовал коды, доступные для подобных вопросов, но мне не удалось заставить их работать в моем случае :(
Большое спасибо.






Чтобы использовать BeautifulSoup, вам сначала нужно понять, как устроен исходный код html. Вы можете найти несколько основных руководств по этому вопросу с помощью простого поиска в Google.
Но самое главное, что html-код содержит элементы с tags, а эти теги имеют attributes. То, что вы ищете, находится под тегами <a> с соответствующей ссылкой в качестве атрибута href. Итак, нам нужно найти все теги <a>, у которых есть атрибут href с расширением excel xls.
Вы можете увидеть это, проверив страницу (щелкните правой кнопкой мыши на странице и выберите «Проверить» или Ctrl-Shift-I, чтобы открыть панель инструментов разработчика. Затем вы можете щелкнуть, чтобы найти нужные вам части с соответствующим html-кодом) и просмотр источника html:
Как только они у вас появятся, вы будете перебирать их, чтобы открыть и сохранить. Мы также будем делать это только для тех, где в тексте/контенте для этого тегового элемента есть «Приложение: Общедоступные столы по всему миру».
Просто убедитесь, что вы выбрали правильный корневой каталог, в котором вы хотите сохранить его, где указано 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)
как бы вы изменили код, который вы включили выше, если вы хотите загрузить документы thrww, которые содержат «Приложение: общедоступные столы по всему миру» в своих именах? Допустим, я хочу загрузить его на свой рабочий стол. Кроме того, каковы <a> теги, которые вы упомянули выше? Я очень ценю вашу помощь :)
@Dimitra Я отредактировал / добавил информацию в решение для вас
Привет Читаун88! Спасибо, что вы есть и помогаете! :) Так теперь он скачивает документы с этими именами? Я попробовал приведенный выше код и попросил сохранить их на рабочем столе, но я их не вижу. Не могли бы вы рассказать мне, как это работает? Нужно ли что-то включать? Большое спасибо :)
спасибо большое все работает! :) есть ли возможность включить функцию if, которая будет проверять, сохранен ли уже каждый документ excel в моей папке?
Спасибо, chitown88, это замечательная работа :) Думаю, я могу изменить excel_files = суп.выбрать('a[href*=xls]') в pdf, если я хочу загрузить документ в формате pdf с веб-сайта, правильно? Я хочу расширить и загрузить несколько PDF-файлов с разных веб-сайтов :)
Привет @ chitown88! Мне интересно, как мы можем изменить приведенный ниже код, чтобы загрузить информационный бюллетень с веб-сайта: am.jpmorgan.com/gb/en/asset-management/gim/liq/products/d/…. Я хочу скачать доступный там информационный бюллетень
@Dimitra, ты имеешь в виду таблицу фактов фонда? Не вижу ничего для скачивания (хотя с телефона просматриваю). На самом деле, пришлите мне электронное письмо, мы можем просто перевести это в автономный режим. Джейсон[email protected]
Спасибо @chitown88 за предложение вашей помощи. Я отправлю вам электронное письмо с подробным объяснением конечной цели. :) еще раз большое спасибо
спасибо за помощь, не могли бы вы сказать мне, как я могу загрузить документ, который содержит что-то на плитке? (например, я хочу загрузить только те документы, название которых включает «Дополнение: общедоступные таблицы по всему миру». Также не могли бы вы рассказать мне немного больше о href? Я действительно не понимаю, что должно быть внутри. Извините, если мой вопрос действительно глупый, но я действительно новичок в этом мире :)