Maison  >  Questions et réponses  >  le corps du texte

Les éléments HTML ne peuvent pas être localisés lors de l'exploration du Web. Cet élément est visible dans l'outil d'inspection de site

J'essaie d'explorer les titres de tous les tableaux à partir de cette URL : https://www.nature.com/articles/s41586-023-06192-4

Je peux trouver cet élément HTML sur le site :

<b id="Tab1" data-test="table-caption">Table 1 Calculated Ct–M–Ct angles</b>

Je ne peux pas explorer ce titre car il est introuvable. Même si j'imprime le script HTML sur la console, cet élément est introuvable.

J'utilise le code suivant pour imprimer le script HTML :

from requests_html import HTMLSession
from bs4 import BeautifulSoup

url = 'https://www.nature.com/articles/s41586-023-06192-4'

session = HTMLSession()
response = session.get(url)

response.html.render()

soup = BeautifulSoup(response.html.raw_html.decode('utf-8'), 'html.parser')
print(soup.prettify())

Utilisez la fonction d'exploration de BeautifulSoup :

def get_tables(driver):
    tables = []
    html = driver.page_source
    soup = BeautifulSoup(html, 'html.parser')

    for i in range(1, 11):
        try:
            table_caption = soup.find('b', {'id': f'Tab{i}', 'data-test': 'table-caption'})
            table_text = table_caption.text if table_caption else "Not Available"
            if table_text != "Not Available":
                print(f"找到表格{i}:{table_text}")
            else:
                print(f"未找到表格{i}。")
            tables.append(table_text)
        except Exception as e:
            print(f"处理表格{i}时出错:{str(e)}")
            tables.append("Not Available")

    return tables

Utilisez la fonction d'exploration de Selenium :

def get_tables(driver):
    tables = []

    for i in range(1, 11):
        try:
            table_caption = driver.find_element_by_css_selector(f'b#Tab{i}[data-test="table-caption"]')
            table_text = table_caption.text if table_caption else "Not Available"
            if table_text != "Not Available":
                print(f"找到表格{i}:{table_text}")
            else:
                print(f"未找到表格{i}。")
            tables.append(table_text)
        except Exception as e:
            print(f"处理表格{i}时出错:{str(e)}")
            tables.append("Not Available")

    return tables

J'ai essayé d'utiliser Selenium et BeautifulSoup pour explorer le site Web. J'ai vérifié l'iframe. J'ai retardé l'opération de récupération de 40 secondes pour garantir que la page soit complètement chargée. Même GPT4 ne peut pas résoudre ce problème.

P粉225961749P粉225961749395 Il y a quelques jours555

répondre à tous(1)je répondrai

  • P粉920485285

    P粉9204852852023-09-20 10:49:02

    Donc, le code que vous avez utilisé semble correct, le problème qui vous vient à l'esprit est que le site Web charge peut-être l'élément que vous souhaitez explorer via JavaScript ou un appel XHR, donc lorsque vous utilisez la bibliothèque de requêtes pour envoyer une requête, il ne peut pas obtenir C'est cet élément.

    La façon de résoudre ce problème est d'essayer d'utiliser Selenium, d'ouvrir le site Web avec Selenium, puis de charger le code source de la page dans bs4, afin que votre code fonctionne normalement.

    Remarque : Lorsque l'intégralité du site Web est chargée, chargez le code source de la page dans bs4. Vous devrez également créer une fonction de connexion à l'aide de Selenium, car ce site Web nécessite une connexion pour afficher le contenu.

    répondre
    0
  • Annulerrépondre