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.
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.