HTML-функция BeautifulSoup не будет работать дважды - PullRequest
0 голосов
/ 05 января 2019

Я использую селен и bs4 для очистки веб-страницы. Вот фрагмент скрипта Python:

html = driver.page_source

soup = soup(html, 'html.parser')
print(soup)
soup = soup(html, 'html.parser')
print(soup)

Первый print(soup) возвращает проанализированный html. Второй print(soup) возвращает []. Это почему? Я довольно новичок в чистке и Python в целом, поэтому любое руководство здесь очень ценится. Спасибо!

Ответы [ 2 ]

0 голосов
/ 05 января 2019

В первом выражении вы привязываете soup к проанализированному объекту BeautifulSoup:

soup = soup(html, 'html.parser')

После печати вы теперь вызываете этот повторно привязанный объект (soup); например случай не лучших выбранных имен переменных?

Каков ваш импорт, откуда приходит этот soup() конструктор?
Это гораздо более кратко - и менее подвержено ошибкам - если вы придерживаетесь обычного способа вызова конструктора / создания объекта - используя BeautifulSoup() напрямую:

from bs4 import BeautifulSoup

# your code to get some html

soup = BeautifulSoup(html, 'html.parser')
print(soup)
soup = BeautifulSoup(html, 'html.parser')
print(soup)
0 голосов
/ 05 января 2019

Поскольку вы переопределяете свою функцию soup () с помощью переменной "soup".

Попробуйте это:

html = driver.page_source

soup_ = soup(html, 'html.parser')
print(soup_)
soup_ = soup(html, 'html.parser')
print(soup_)

Надеюсь, это поможет вам!

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