Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk mengekstrak hanya teks yang boleh dilihat dari halaman web menggunakan BeautifulSoup?

Bagaimana untuk mengekstrak hanya teks yang boleh dilihat dari halaman web menggunakan BeautifulSoup?

Susan Sarandon
Susan Sarandonasal
2024-11-14 18:56:02185semak imbas

How to Extract Only Visible Text from Web Pages Using BeautifulSoup?

Pengekstrakan Teks Halaman Web dengan BeautifulSoup: Mengekstrak Teks Boleh Nampak Secara Eksklusif

Pengikisan web selalunya melibatkan pengambilan semula kandungan teks tertentu daripada halaman web. Menggunakan BeautifulSoup, pustaka penghuraian HTML yang digunakan secara meluas, anda mungkin menghadapi cabaran untuk mengekstrak hanya teks yang boleh dilihat pada halaman web, tidak termasuk elemen yang tidak diingini seperti skrip, ulasan dan CSS.

Mengenal pasti Teks Nampak

Untuk menentukan sama ada elemen HTML tertentu mengandungi teks yang boleh dilihat, anda boleh menggunakan fungsi tag_visible. Fungsi ini menyemak sama ada elemen induk elemen sasaran berada dalam set tertentu teg yang dikecualikan (cth., gaya, skrip, kepala) atau jika elemen sasaran ialah ulasan. Jika mana-mana syarat dipenuhi, fungsi mengembalikan Palsu, menunjukkan elemen itu tidak dianggap kelihatan.

Mengekstrak Teks Kelihatan

Untuk mengekstrak teks kelihatan daripada halaman web, ikut langkah berikut:

  1. Buat objek BeautifulSoup daripada badan HTML.
  2. Cari semua teks dalam HTML menggunakan kaedah findAll(text=True).
  3. Tapis teks yang diekstrak menggunakan fungsi tag_visible untuk menghapuskan unsur yang tidak diingini.
  4. Sambungkan rentetan teks yang boleh dilihat bersama-sama, alih keluar ruang putih di hadapan dan di belakang.

Contoh Penggunaan

Kod di bawah menunjukkan cara menggunakan teknik ini untuk mengekstrak teks yang boleh dilihat daripada halaman web:

from bs4 import BeautifulSoup
from bs4.element import Comment
import urllib.request

def tag_visible(element):
    if element.parent.name in ['style', 'script', 'head', 'title', 'meta', '[document]']:
        return False
    if isinstance(element, Comment):
        return False
    return True

def text_from_html(body):
    soup = BeautifulSoup(body, 'html.parser')
    texts = soup.findAll(text=True)
    visible_texts = filter(tag_visible, texts)
    return u" ".join(t.strip() for t in visible_texts)

html = urllib.request.urlopen('http://www.nytimes.com/2009/12/21/us/21storm.html').read()
print(text_from_html(html))

Dengan memanfaatkan pendekatan ini, anda boleh mengikis teks yang boleh dilihat dengan berkesan daripada halaman web, tidak termasuk kandungan yang tidak berkaitan daripada skrip, ulasan dan elemen tersembunyi lain.

Atas ialah kandungan terperinci Bagaimana untuk mengekstrak hanya teks yang boleh dilihat dari halaman web menggunakan BeautifulSoup?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn