Rumah > Soal Jawab > teks badan
Saya cuba merangkak tajuk semua jadual dari URL ini: https://www.nature.com/articles/s41586-023-06192-4
Saya boleh mencari elemen HTML ini di tapak web:
<b id="Tab1" data-test="table-caption">Table 1 Calculated Ct–M–Ct angles</b>
Saya tidak dapat merangkak tajuk ini kerana ia tidak dapat ditemui. Walaupun saya mencetak skrip HTML ke konsol, elemen ini tidak dapat ditemui.
Saya menggunakan kod berikut untuk mencetak skrip 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())
Gunakan fungsi merangkak 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
Gunakan fungsi merangkak 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
Saya cuba menggunakan Selenium dan BeautifulSoup untuk merangkak tapak web. Saya telah menyemak iframe. Saya menangguhkan operasi pengambilan selama 40 saat untuk memastikan halaman dimuatkan sepenuhnya. Malah GPT4 tidak dapat menyelesaikan masalah ini.
P粉9204852852023-09-20 10:49:02
Jadi kod yang anda gunakan kelihatan baik, masalah yang terlintas di fikiran ialah tapak web mungkin memuatkan elemen yang anda ingin crawl melalui JavaScript atau beberapa panggilan XHR, jadi apabila anda menggunakan perpustakaan permintaan untuk menghantar permintaan, ia tidak dapat ia Unsur itu.
Cara untuk menyelesaikan masalah ini ialah cuba menggunakan Selenium, buka laman web dengan selenium, dan kemudian muatkan kod sumber halaman ke dalam bs4, supaya kod anda akan berfungsi seperti biasa.
Nota: Apabila keseluruhan laman web dimuatkan, muatkan kod sumber halaman ke dalam bs4. Anda juga perlu mencipta fungsi log masuk menggunakan selenium, kerana laman web ini memerlukan log masuk untuk melihat kandungan.