使用以下代码从网站提取的属性中的元素中提取特定值时遇到麻烦:
from bs4 import BeautifulSoup
import requests
# Get mills and estates information from dashboard
url = 'http://nestetraceabilitydashboard.com/nestes-palm-oil-dashboard'
page = requests.get(url).text
soup = BeautifulSoup(page, "html.parser")
divList = soup.findAll('div', attrs={"class" : "map-item estate-map-item"})
data = {}
for div in divList:
for k,v in div.attrs.items():
if k not in ('class'):
data[k] = data.get(k, []) + [v]
df = pd.DataFrame(data)
divList
的摘录如下:
[<div class="map-item estate-map-item" data-country="Indonesia" data-latitude="1.926944000" data-location="Riau" data-longitude="99.906390000" data-mills="Aek Nabara" id="map_item_5600">(Aek Nabara) - Aek Nabara</div>,
<div class="map-item estate-map-item" data-country="Indonesia" data-latitude="0.429444444" data-location="Riau" data-longitude="101.818611100" data-mills="Buatan I " id="map_item_5601">(Buatan I/II ) - Buatan</div>,
但是,输出dict
和dataframe
删除了id
中map_item_XXXX之后的所有内容。
我该如何只在dict
中的引号之外获取值,然后再将其放入dataframe
id
列中,例如(Aek Nabara) - Aek Nabara
上方divList
?
答案 0 :(得分:2)
(Aek Nabara) - Aek Nabar
不是属性(.attrs)
,而是textContent
使用.text
来获取值
for div in divList:
for k,v in div.attrs.items():
if k != 'class':
if k == 'id':
# insert "(Aek Nabara) - Aek Nabara" instead of "map_item_5600"
data[k] = data.get(k, []) + [div.text.strip()]
else:
data[k] = data.get(k, []) + [v]
df = pd.DataFrame(data)
答案 1 :(得分:1)
for div in divList:
print(div.text)
Output:
(Aek Nabara) - Aek Nabara
(Buatan I/II ) - Buatan
(Buatan I ) - Bhakti Mandiri Co/op
(Buatan I ) - Jaya Makmur Co/op
(Buatan I ) - Sumber Rejeki Co/op
(Buatan I ) - Sejahtera Co/op
(Buatan II) - KUD Buatan Jaya
(Buatan II) - KUD Mitra Usaha
(Buatan II) - KUD Makarti Jaya
(Buatan II) - KUD Bina Mulia
(Buatan II) - KUD Delima Sakti
(Buatan II) - KUD Mulus Rhayu
(Buatan II) - KUD Bhirawa Bhakti
(Buatan II) - KUD Tani Rukun
(Buatan II) - KUD Kebun Sawit Harapan
(Bungo Tebo) - Bungo Tebo
(Bungo Tebo) - Bungo Tebo Plasma
(Gunung Melayu I) - Pulau Maria
(Gunung Melayu II) - Batu Anam
(Gunung Melayu II) - Sentral
(Gunung Melayu II) - Aek Tarum
(Muara Bulian) - Muara Bulian
(Muara Bulian) - KUD Barokah
(Muara Bulian) - KUD Subur Makmur
(Muara Bulian) - KUD Budi Sari
(Muara Bulian) - KUD Makmur Rejeki
(Muara Bulian) - KUD Karya Lestari
(Muara Bulian) - KUD Tuah Sakato
(Negeri Lama I/II) - Negeri Lama Selatan
(Negeri Lama I/II) - Negeri Lama Central
(Negeri Lama I/II) - Negeri Lama Utara
(Negeri Lama I/II) - Aek Kuo
(Peranap) - Peranap
(Peranap) - Peranap Plasma
(Segati) - Segati
(Segati) - Penarikan
(Segati) - Penarikan (KKPA)
(Segati) - Gondai
(Taman Raja) - Taman Raja
(Taman Raja) - Badang
(Tanjung Pauh) - Gunung Sahilan Co-Op
(Tanjung Selamat) - Tanjung Selamat
(Tanjung Selamat) - Kebun Pangkatan
(Teluk Panjie) - Teluk Panjie
(Topaz) - Topaz
(Tungkal Ulu) - Tungkal Ulu
(Tungkal Ulu) - Tungkal Ulu Smallholders Estate
(Ukui I) - Ukui
(Ukui I) - KUD Sumber Makmur
(Ukui I) - KUD Bina Usaha Baru
(Ukui I) - KUD Bakti
(Ukui I) - KUD Karya Bersama
(Ukui I) - KUD Sawit Subur
(Ukui I) - KUD Bina Sejahtera
(Ukui I) - KUD Sumber Bhagia
(Ukui I) - KUD Bukit Potalo
(Ukui I) - KUD Usaha Baru
(Ukui II) - Soga
(Ukui II) - KUD Tani Subur
(Ukui II) - KUD Karya Tani
(Ukui II) - KUD Mekar Abadi
(Ukui II) - KUD Trani Maju
(Ukui II) - KUD Tani Bahagia
(Ukui II) - KUD Usaha Tani
(Arindo Trisejahtera) - Arindo Trisejahtera-1
(Meridan Sejatisurya) - Meridan Sejatisurja
(Panca Surya Agrindo) - Panca Surya Agrindo
(Perdana Intisawit Perkasa) - Perdana Intisawit Perkasa
(Subur Arum Makmur) - Subur Arum Makmur
(Surya Intisari Raya) - Surya Intisari Raya
(Batu Ampar) - Batu Ampar
(Batu Ampar) - Batu Mulia
(Batu Ampar/Sungai Kupang) - Sungai Panci
(Hanau) - Hanau
(Hanau) - Tasik Mas
(Hanau) - Tanjung Paring
(Hanau) - Langadang
(Kijang) - Kijang
(Kijang) - Kijang Kencana Plasma
(Libo) - Libo
(Libo) - Nenggala
(Libo) - Sungai Rokan
(Libo) - Sungai Tapung Plasma
(Libo / Naga Sakti) - Rama Bakti
(Naga Sakti) - Naga Mas
(Naga Sakti) - Naga Sakti
(Perdana) - Perdana
(Perdana) - Semandau
(Perdana) - Muara Dua
(Perdana) - Leggana
(Rama Rama) - Rama Rama
(Rama Rama) - Amarta Jaya Plasma
(Sam Sam ) - Sam Sam
(Sam Sam ) - Kandista Sari
(Sam Sam ) - Palapa
(Sam Sam ) - Ujung Tanjung
(Semilar) - Semilar
(Semilar) - Sei Rindu
(Semilar) - Mandang
(Semilar) - Puri
(Sungai Kupang) - Sungai Kupang
(Sungai Rungau) - Sungai Runggau
(Sungai Rungau) - Sungai Seruyan
(Sungai Rungau) - Terawan
(Sungai Rungau) - Tangar
(Sungai Rungau) - Bukit Tiga
(Tanah Laut) - Tanah Laut
(Tanah Laut) - Kintapura
(Bumi Permai) - Beringin Jaya
(Bumi Permai) - Kahoi
(Bumi Permai) - Lembuswana
(Bumi Permai) - Bumi Permai
(Bumi Permai) - Prima
(Bumi Permai) - Rahayu
(Bumi Permai) - Mahakam
(Jorong) - Kebun Barat
(Jorong) - Kebun Tengah
(Penajam) - Penajam
(Satui) - Timur Estate
(Satui) - Satui
(Mandau) - Mandau 1
(Mandau) - Mandau 2
(Mandau) - Mandau 3
(Mandau) - Mandau 4
(Mandau) - Mandau 5
(Mandau) - Mandau 6
(Nilo 1) - Nilo Barat 1
(Nilo 1) - Nilo Barat 2
(Nilo 2) - Nilo Timur 1
(Nilo 2) - Nilo Timur 2
(Steelindo Wahana Perkasa) - Air Karang
(Steelindo Wahana Perkasa) - Air Putih
(Steelindo Wahana Perkasa) - Air Raya
(Steelindo Wahana Perkasa) - Bentaian
(Steelindo Wahana Perkasa) - Gunung Nayo
(Steelindo Wahana Perkasa) - Gunung Seru
(Steelindo Wahana Perkasa) - Limau Manis
(Steelindo Wahana Perkasa) - Mempaya
(Steelindo Wahana Perkasa) - Buding
(Steelindo Wahana Perkasa) - Cendil
(Steelindo Wahana Perkasa) - Air Seruk
(Steelindo Wahana Perkasa) - Kacang Butor
(Steelindo Wahana Perkasa) - Air Selumar
(Tapung kanan) - Tapung Kanan 1
(Tapung kanan) - Tapung Kanan 2
(Tapung kanan) - Tapung Kanan 3
(Batang Kulim) - Estate I
(Batang Kulim) - Estate II
(Batang Kulim) - Estate VI
(Batang Kulim) - KKPA Merbau Sakti
(Maju Aneka Sawit) - Tanah Mas
(Maju Aneka Sawit) -Alam Sahara
(Maju Aneka Sawit) - Kas Desa Tanah Putih
(Maju Aneka Sawit) - Kas Desa Penyang
(Maju Aneka Sawit) - Sari Mas 2
(Sukajadi Sawit Mekar 1) - Sebabi
(Sukajadi Sawit Mekar 1) - Seranau
(Sukajadi Sawit Mekar 2) - Bukit Linang
(Sukajadi Sawit Mekar 2) - Bukit Limas
(Lungmanis) - Lungmanis
(Lungmanis) - Bukit Tabin
(Lungmanis) - Tungku
(Pinang) - Pinang
(Pinang) - Sigalong
(Pinang) - Pangeran
(Rimmer) - Rimmer
(Rimmer) - Sungai Silabukan
(Mill 2) - Pang Burong
(Mill 2) - Tundong
(Mill 2) - Sri Kunak
(Mill 2) - Ringlet
(Mill 2) - Jatika
(Sapi) - Sapi 1 & 2
(Sapi) - Kiabau
(Sapi) - Terusan 1
(Sapi) - Terusan 2