Как сохранить вложения с веб-сайтов с помощью Beautiful Soup? - PullRequest
0 голосов
/ 20 июня 2020

Я написал код для очистки вложений, прикрепленных к веб-сайту. По сути, он очищает гиперссылки на вложения. Я не могу найти способ сохранить это вложение напрямую в локальном месте.

import requests
import pandas as pd 
from requests import get
url = 'https://www.amfiindia.com/research-information/amfi-monthly'
response = get(url,verify=False)
import bs4
from bs4 import BeautifulSoup
html_soup = BeautifulSoup(response.content,'html.parser')

filetype = '.xls'
excel_sheets = html_soup.find_all('a')

#File name where the links to the excel sheet needs to be saved --> here: "All_Links_2.csv"
destination = open('All_Links_2.csv','wb')

for link in excel_sheets:
    href = link.get('href') + '\n'
    if filetype in href:
        print(href)

Кто-нибудь может здесь помочь ??

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Если вы пытаетесь получить только ссылки, тогда нет необходимости в двоичном режиме, также поскольку вы импортировали pandas, вы можете использовать это для их сохранения.

Сначала создать фрейм данных:

df = pd.DataFrame([a['href'] for a in excel_sheets if filetype in a['href']])

Затем просто сохраните его без имен столбцов (header = False):

df.to_csv('All_Links_2.csv', header=False)
0 голосов
/ 20 июня 2020

Это не совсем то, что вы делаете с красивым супом, вместо этого мы используем библиотеку urllib.

import urllib.request

urllib.request.urlretrieve(href, "file.jpg")

Это берет адрес изображения и сохраняет его как file.jpg. Если вам нужны разные имена файлов, что применимо в вашем случае, сделайте строку "file" + i + ".jpg", где i будет некоторым значением, которое вы увеличиваете

...