Не удается получить доступ ко второму подразделению Beautifulsoup

#python #web-scraping #beautifulsoup

#python #очистка веб-страниц #beautifulsoup

Вопрос:

У меня есть HTML-код ниже, я хочу получить доступ к «sisa 1» .. но всегда терпел неудачу, кто-нибудь может помочь?

 <dd>
<div class="product-list__stock--branch">
 <div data-id="2" data-stock="1" class="product-list__stock product- 
       list__stock--ready">
    <b>Online / COD</b>
    <span>Stok tersedia</span>
 </div>
 <div data-id="3" data-stock="1" class="product-list__stock product- 
     list__stock--ready">
    <b>Toko Semarang</b>
    <span>Stok tersedia</span>
    <span class="tag2 tag--warning" style="color:white;">Sisa 1</span>
  </div>
  <div class="product-list__stock--available-branch-trigger product- 
     list__stock--available-branch-trigger--sold-out">Tidak tersedia di 
     toko lain.
  </div>
</div>
</dd>
  

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

1. Теги Div не совпадают, вы уверены, что HTML указан правильно?

2. да, я выбросил его из интернет-магазина в Индонезии

3. let x = document.querySelector("span.tag2.tag--warning").innerText;

4. Результат по-прежнему отсутствует

Ответ №1:

Вот решение с BeautifulSoup:

 div = soup.find("div", {"data-id": "3"})
  

Это возвращает div, содержащий Sisa 1. Чтобы получить фактический текст «Sisa 1»:

 text = div.contents[2].text
  

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

1. Я попробовал это, результат здесь отсутствует мой скрипт: link = requests.get(‘ jakartanotebook.com /… soup2 = BeautifulSoup(ссылка, ‘lxml’) div = soup2.find(«div», {«data-id»: «3»}) попробуйте: text = div.содержимое [2]. текст, за исключением исключения в виде e: text = None text=»Не найден» печать (текст) … Извините, я не знаю, как писать в этом поле для комментариев…

Ответ №2:

Вы можете использовать класс для доступа к элементу следующим образом:

 from bs4 import BeautifulSoup

html = """
<dd>
<div class="product-list__stock--branch">
 <div data-id="2" data-stock="1" class="product-list__stock product- 
       list__stock--ready">
    <b>Online / COD</b>
    <span>Stok tersedia</span>
 </div>
 <div data-id="3" data-stock="1" class="product-list__stock product- 
     list__stock--ready">
    <b>Toko Semarang</b>
    <span>Stok tersedia</span>
    <span class="tag2 tag--warning" style="color:white;">Sisa 1</span>
  </div>
  <div class="product-list__stock--available-branch-trigger product- 
     list__stock--available-branch-trigger--sold-out">Tidak tersedia di 
     toko lain.
  </div>
</div>
</dd>
"""
soup = BeautifulSoup(html, 'html.parser')
all_rows = soup.find(class_="tag2")

print(all_rows.text)
  

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

1. @NugrohoMoristianto Вы скопировали точно такой же код?

2. вот мой код: link = requests.get(‘ jakartanotebook.com /… soup2 = BeautifulSoup(ссылка,’lxml’) all_rows = soup2.find(class_=»tag2″) попробуйте: text1 = all_rows.text за исключением исключения в виде e: text1 = Нет text1=»Не найдено» печать (text1)

3. @NugrohoMoristianto Можете ли вы отправить ссылку на код (не можете скопировать его).

4. [ссылка] jakartanotebook.com /…

5. @NugrohoMoristianto У каждого веб-сайта разные теги