Как записать все данные из ссылок?
Пожалуйста, помогите найти решение, мне нужно скачать все файлы стилей со страницы в один файл. Для этого я использую bs4 для получения всех ссылок. Для получения контента со страницы я использую requests
# Получаю строки с атрибутом stylesheet
all_url_links = soup.find_all(attrs={"rel": "stylesheet"})
for item in all_url_links:
# Получаю все ссылки из атрибута href
all_url_styles = item.get('href')
# Отпраляю запрос на каждую страницу по ссылке
page_style = requests.get(all_url_styles, headers=headers)
# Записываю в файл
with open('all_styles.css', 'w') as file:
for i in page_style:
file.write(page_style.text)
Но в файл записываются стили только из одной ссылки. Как мне записать все стили из всех ссылок которые я получил в переменной all_url_styles
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Причина в with open('all_styles.css', 'w') as file:, а точнее в w. Этот флаг очищает файл перед тем как записать в него
Решением может быть использование флага a:
with open('all_styles.css', 'a') as file:
file.write(page_style.text)
Еще вариантом будет заранее открыть файл и при переборе ссылок записывать в него:
# Получаю строки с атрибутом stylesheet
all_url_links = soup.find_all(attrs={"rel": "stylesheet"})
# Записываю в файл
with open('all_styles.css', 'w') as file:
for item in all_url_links:
# Получаю все ссылки из атрибута href
all_url_styles = item.get('href')
# Отпраляю запрос на каждую страницу по ссылке
rs = requests.get(all_url_styles, headers=headers)
file.write(rs.text + "\n")