Не открывается сохранённый файл index.html

satfan

Пользователь
Пользователь
Апр 21, 2020
98
6
8
Win 7, IDLE (Python 3.8 32-bit)
Не открывается сохранённый файл index.html
Код скрипта:
Код:
# -*- coding: utf-8 -*-

from bs4 import BeautifulSoup
import re

file = open('index.html', mode='rb')
data = file.read()
soup = BeautifulSoup(data, "html.parser")
print(soup)
Далее мне нужно сохранить все ссылки в txt
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Вот пример:
Python:
from bs4 import BeautifulSoup


links = []
# получаем ссылки из файла
with open('home.html', 'r', encoding='utf-8') as f:
    data = f.read()
    soup = BeautifulSoup(data, "html.parser")
    links = soup.find_all('a')


# выводим их в консоль
for link in links:
    print(link['href'])


# записываем в файл file.txt
with open('file.txt', 'w', encoding='utf-8') as f:
    for link in links:
        f.write(link['href'] + '\n')
 

satfan

Пользователь
Пользователь
Апр 21, 2020
98
6
8
Спасибо. Часть ссылок получил.
Самых нужных нет со словом: dlattach;attach=
В конце получаю ошибку с Вашего примера:
Код:
Traceback (most recent call last):
  File "C:\Users\Александр\Desktop\6\1.py", line 14, in <module>
    print(link['href'])
  File "C:\Python38-32\lib\site-packages\bs4\element.py", line 1406, in __getitem__
    return self.attrs[key]
KeyError: 'href'
Если я Вам дам мой index.html --- Вы сможете проверить ?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
В конце получаю ошибку с Вашего примера
Вот с проверкой на пустой атрибут href:
Python:
from bs4 import BeautifulSoup


links = []
# получаем ссылки из файла
with open('home.html', 'r', encoding='utf-8') as f:
    data = f.read()
    soup = BeautifulSoup(data, "html.parser")
    links = soup.find_all('a')


# выводим их в консоль
for link in links:
    print(link.get('href'))


# записываем в файл file.txt
with open('file.txt', 'w', encoding='utf-8') as f:
    for link in links:
        if link.get('href'):
            f.write(link.get('href') + '\n')
Пройдите курс по основам питона, например этот, чтобы самостоятельно исправлять подобные элементарные ошибки.

Самых нужных нет со словом: dlattach;attach=
Вы не показали html-файл. Мой код ищет просто теги a.
Вот ссылка на документацию по BeautifulSoup - почитайте и доработайте код самостоятельно.
 

satfan

Пользователь
Пользователь
Апр 21, 2020
98
6
8
Уважаемый stud_55
Большое спасибо.
Удачи.
 

Форум IT Специалистов