В чем разница между сайтом BeautifulSoup site.content и site.read ()? - PullRequest
0 голосов
/ 05 марта 2020

Когда я использую локальный файл html, хранящийся на моем ноутбуке,

from bs4 import BeautifulSoup
site = open('smpl.htm', 'r')
page = BeautifulSoup(site.content, 'html.parser')
print(page)

возвращает (в cmd):

Traceback (most recent call last):
File "c:/~~~~~~/python/h.py", line 3, in <module>
page = BeautifulSoup(site.content, 'html.parser')
AttributeError: '_io.TextIOWrapper' object has no attribute 'content'

, но заменяя site.content на site.read(), код показывает правильный HTML и выполняет операции с ним без проблем.

Однако, если я получу свой файл HTML из Интернета через requests, то мне придется напишите site.content, а не site.read() для его анализа.

В чем разница между содержимым и read () и что для чего подходит?

1 Ответ

1 голос
/ 05 марта 2020

Открытие файла html на вашем ноутбуке возвращает TextIOWrapper, у которого есть метод read () для получения содержимого файла.

При открытии веб-страницы используется другой класс с разными методами - один Вы ссылаетесь на возвращение некоторой формы объекта HttpResponse с параметром строки содержимого.

...