Mengekstraksi nilai numerik tanpa id kelas di html menggunakan BeautifulSoup dengan python

Saya ingin mengekstrak nilai "Perkiraan populasi kode pos pada tahun 2015" dari situs data kota untuk wilayah tertentu (http://www.city-data.com/zips/17033.html). Saya menggunakan beautifulsoup untuk mengekstrak nilainya, tetapi tidak berhasil.

Masalahnya adalah karena tidak ada id kelas yang terkait dengannya. Jadi, saya menggunakan "soup.find(text=re.compile("^Perkiraan populasi kode pos tahun 2015"))" tetapi hanya mengembalikan teks dan bukan nilai numerik yaitu "17.649".

Silakan temukan kode saya di bawah ini.

from bs4 import BeautifulSoup
import re
import urllib.request
with urllib.request.urlopen('http://www.city-data.com/zips/17033.html') as 
response:
    html = response.read()
    print("html", html)


soup = BeautifulSoup(html, "html.parser")
population=soup.find(text=re.compile("^Estimated zip code population in 2015"))
print(population)

Ada saran? Terima kasih sebelumnya.


person June Shelter    schedule 22.09.2017    source sumber
comment
Jika Anda menginstal perpustakaan lxml di mesin Anda, maka ada solusi untuk Anda. Regex tidak diperlukan untuk itu. Biarkan aku tahu.   -  person SIM    schedule 23.09.2017
comment
Hai Shahin, Terima kasih atas saran Anda. Ya, saya sudah menginstalnya. Saya mengikuti apa yang disarankan salah satu anggota lain dan saya mendapatkan hasilnya. Tapi saya tertarik untuk mengeksplorasi cara kerja lxml. Tolong bisakah Anda memberi tahu saya cara menggunakan lxml untuk ini?   -  person June Shelter    schedule 25.09.2017


Jawaban (1)


Temukan elemen Anda sebagai tag b dan temukan next_sibling untuk mendapatkan teks yang Anda inginkan.

Contoh:

population = soup.find("b", text=re.compile("^Estimated zip code population in 2015"))
print population.get_text(), population.next_sibling

Keluaran:

Perkiraan populasi kode pos pada tahun 2015: 17.649

person Zroq    schedule 23.09.2017
comment
Zroq, Terima kasih banyak, berhasil. Saya sangat menghargainya. - person June Shelter; 25.09.2017