BeautifulSoup не работает - PullRequest
       15

BeautifulSoup не работает

0 голосов
/ 02 мая 2018

Я новичок в поиске в Интернете. BeautifulSoup ничего мне не дает. Это странно. PS Я использовал «html.parser», чтобы заменить «lxml», который также не работает.

from urllib.request import urlopen
>>> from bs4 import BeautifulSoup
>>> html = urlopen("http://www.pythonscraping.com/pages/page1.html")
>>> bsObj = BeautifulSoup(html.read())

Warning (from warnings module):

File"C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-
packages\bs4\__init__.py", line 181
    markup_type=markup_type))
UserWarning: No parser was explicitly specified, so I'm using the best 
available HTML parser for this system ("lxml"). This usually isn't a 
problem, but if you run this code on another system, or in a different 
virtual environment, it may use a different parser and behave differently.

The code that caused this warning is on line 1 of the file <string>. To get 
rid of this warning, change code that looks like this:

BeautifulSoup(YOUR_MARKUP})

to this:

BeautifulSoup(YOUR_MARKUP, "lxml")

>>> bsObj = BeautifulSoup(html.read(),"lxml")
>>> print(bsObj.h1)
None
>>> bsObj = BeautifulSoup(html.read())
>>> print(bsObj.h1)
None

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Проблема неоднократно вызывала read(). После того, как первый вернул ожидаемый контент, следующие просто возвращали пустой bytes объект.

Вы можете просто вызвать read() один раз и сохранить возвращаемое значение в переменной и использовать его по своему усмотрению, создав несколько суповых объектов и т. Д.

>>> html = urlopen("http://www.pythonscraping.com/pages/page1.html").read()
>>> bsObj = BeautifulSoup(html, "lxml")
>>> bsObj.h1
<h1>An Interesting Title</h1>

Если вы не хотите загружать дополнительные парсеры, приведенный выше код также будет работать с html.parser.

0 голосов
/ 02 мая 2018

Когда появляется предупреждение, я просто игнорирую его и печатаю bsObj.It сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...