Как я могу разделить слово и число после очистки сайта с BeautifulSoup? - PullRequest
0 голосов
/ 06 мая 2018

Мне сложно вычеркнуть данные с веб-сайта, и эти данные находятся внутри таблицы. Я использую BeautifulSoup и urllib из Python, и когда я запускаю программу, она выглядит примерно так: IndexAceh5.82Bali6.23Banten5.85Bengkulu4.81DKI6.. Как я могу удалить Index, разделить слово как Aceh и число 5.82 на что-то вроде этого

prov = ['Aceh', 'Bali']

number = [5.82, 6.23]

и это мой код и ссылка на сайт:

import urllib2
from bs4 import BeautifulSoup
quote_page = "MY LINK"
page = urllib2.urlopen(quote_page)
soup = BeautifulSoup(page, "html.parser")
pemerintah = soup.find("table", attrs={"cellspacing": "0"}); #cellspacing="0"
name = pemerintah.text.strip()
print name

Я нашел такой же случай в здесь , но когда я пытаюсь, он не работает, потому что в моем случае у меня есть ., и если я использую ade12.3, например, это даст мне результат ade, 12 не ade, 12.3

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Есть более простые способы получить нужные значения с помощью BS4. Но если вы хотите работать со строками, вы можете использовать re.

import re

y = 'IndexAceh5.82Bali6.23Banten5.85Bengkulu4.81'
k = re.split('(\w+)(\d.?\.\d.?)', y.replace('Index',''))
k = [i for i in k if i] #removes ‘’
prov = [item for i,item in enumerate(k) if i%2==0]
num  = [item for i,item in enumerate(k) if i%2!=0]

del y,k,i,item #cleaning
0 голосов
/ 06 мая 2018

Используйте теги th & td для поиска.

Ex:

import urllib2
from bs4 import BeautifulSoup
quote_page = "http://www.kemitraan.or.id/igi/index.php/index.php?option=com_content&view=article&id=235"
page = urllib2.urlopen(quote_page)
soup = BeautifulSoup(page, "html.parser")
pemerintah = soup.find("table", attrs={"cellspacing": "0"}); #cellspacing="0"
for i in pemerintah.find_all("tr"):
    if i.find("th"):
        print i.th.text, " = ", i.td.text

Выход:

Aceh  =  5.82
Bali  =  6.23
Banten  =  5.85
Bengkulu  =  4.81
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...