Выскабливание с помощью beautifulsoup и python. Решение вопроса о том, как увидеть имена участников торгов на eBay

#python #html #beautifulsoup

Вопрос:

Я управляю магазином на eBay и хочу собрать всех участников торгов, которые участвуют в моих аукционах. Я могу видеть

  1. Сумма ставки
  2. Время подачи заявки

Однако я не могу соскрести

  1. Имя участников торгов
  2. Местонахождение Участников торгов

На картинке будет показана таблица HTML-документа, в которой показаны участники торгов, участвующие в одном из моих аукционов

Вот изображение кодов, которые я запускаю

Я использую записную книжку jupyter для запуска своих кодов. Это код, который я использую

 'results = soup.find('table', {'class':'app-bid-history__table'}).find('tbody').find_all('span')'  

[Частный список с наивысшей ценой — личности участников торгов защищены, Частный список с наивысшей ценой — личности участников торгов защищены, Участник с наивысшей ценой, $47.00, $47.00, 27 Июля 2021 года в 6:59:53 вечера PDT, 27 Июля 2021 года в 6:59:53 вечера PDT,

Как вы можете видеть, имя и местоположение Участника торгов не отображаются, но вы можете увидеть его в HTML-документе. Какой код мне нужно запустить?

Ответ №1:

  1. Возможно , вам потребуется проверить свой синтаксический анализатор: если вы используете 'lxml' , попробуйте 'Html.parser' или 'html5lib' посмотрите, работает ли что-либо из этого.

    напр. soup = BeautifulSoup(webpage, 'html.parser')

  2. Добавьте еще один интервал: Из изображения кажется, что все соответствующие значения находятся lt;spangt; внутри другого lt;spangt; . Добавьте перед lt;spangt; и затем find_all lt;spangt; .

    напр. .find('span')find_all('span')

  3. Если они не работают, вам, возможно, потребуется выполнить поиск lt;divgt; по классам отдельно:

    Определите .find('tbody') как отдельное значение, затем попробуйте, x = tbody.find('div', {'class':'textual-display-item'}) а затем y = x.find_all('span') .

Комментарии:

1. Я вставляю другое изображение кодов, которые я запускаю, это то, что вы имели в виду, когда добавляли промежутки?

2. ‘x = результаты.найдите(‘div’,{‘класс’ : ‘текстовый элемент отображения’})’ ‘y = x.find_all(‘span’)’ вот что показывает, я думаю, что понял. [lt;spangt;lt;!—F#10—gt;lt;span class=»cc-text-spans—BOLD»gt;lt;span class=»clipped»gt;Кто больше заплатитlt;/spangt;частный список — претендентов личность защищеныlt;/spangt;lt;!—F/—gt;lt;/spangt;, lt;span class=»cc-text-spans—BOLD»gt;lt;span class=»clipped»gt;Кто больше заплатитlt;/spangt;частный список — претендентов личность защищенаlt;/spangt;, lt;span class=»clipped»gt;высокую ценуlt;/spangt;]