#python #web-scraping #beautifulsoup
Вопрос:
Как вы можете использовать SoupStrainer для анализа комментариев?
Я знаю, как использовать BeautifulSoup для анализа комментариев, но я хотел бы сделать это с помощью SoupStrainer, чтобы ускорить мой код. Возможно ли это?
Пример:
from bs4 import BeautifulSoup,Comment
import requests
txt = requests.get('https://www.basketball-reference.com/boxscores/202012220BRK.html').text
sp = BeautifulSoup(txt,'lxml')
comment = sp.find(text=lambda text:isinstance(text, Comment)
and 'line_score' in text)
Это работает так, как задумано. Но я хотел бы добавить parse_only
аргумент, чтобы BeautifulSoup()
с самого начала анализировать только комментарии.
Личные Попытки
Я действительно не знаю, с чего начать, потому что единственный способ, которым я знаю, как анализировать комментарии, похоже, не переводится напрямую в SoupStrainer
:
ss = SoupStrainer(text=lambda text:isinstance(text, Comment))
sp = BeautifulSoup(txt,'lxml',parse_only=ss)
print(sp)
<!DOCTYPE html>
К сожалению, это явно не сработало.
Я также попытался передать строковый аргумент:
ss = SoupStrainer("comment")
sp = BeautifulSoup(txt,'lxml',parse_only=ss)
print(sp)
<!DOCTYPE html>
Тоже не повезло.
Комментарии:
1. Привет @Machetes0602 Добро пожаловать в SO! можете ли вы указать любой код и URL-ссылку, чтобы это было легко понять!
Ответ №1:
SoupStrainer работает, указывая элементы, подлежащие анализу, в объекте BeautifulSoup. Либо это комментарий, либо любые другие части веб-страницы, на которые вы можете указать напрямую с помощью чего-то вроде xpath или css-селектора. Это помогает определить необходимые теги, которые следует сохранить и опустить. Тогда мы сможем разобрать только необходимые части/теги с помощью BeautifulSoup.
Вы можете найти эту ссылку полезной, чтобы начать работу с SoupStrainer.