Как убрать теги из моего красивого результата супа (например: Address = [a, b, c, d, r ......]) - PullRequest
0 голосов
/ 05 июня 2019

как я могу удалить метки из моего красивого результата (например: Адрес = [a, b, c, d, r ......])

from bs4 import BeautifulSoup as bs
import requests
    #
url = 'https://www.planetware.com/tourist-attractions-/oslo-n-osl-oslo.htm'
url_get = requests.get(url)
soup = bs(url_get.content, 'html.parser')
#
address=soup.find_all('p', class_="nospc")
address
<p class="nospc">Address: Nobels gate 32, N-0268 Oslo</p>,
<p class="nospc">Address: Akershus Festning, 0015 Oslo</p>,
<p class="nospc">Address: Frederiks gate 2, 0164 Oslo</p>,
<p class="nospc">Address: Universitetsgata 13, Oslo</p>,
<p class="nospc">Address: Tøyengata 53, 0578 Oslo</p>,
<p class="nospc">Address: Bellevue, Oslo</p>,
<p class="nospc">Address: Frederiks gate 2, 0164 Oslo</p>,
<p class="nospc">Address: Bygdøynesveien 39, 0286 Oslo</p>,
<p class="nospc">Address: Kongeveien 5, 0787 Oslo</p>,
<p class="nospc">Address: Karl Johansgt. 11, 0154 Oslo</p>,
<p class="nospc">Address: Rådhuset, 0037 Oslo</p>,
<p class="nospc">Address: Bryggegata 9, 0120 Oslo</p>,
<p class="nospc">Address: Sars gate 1, 0562 Oslo</p>,
<p class="nospc">Address: Kirsten Flagstads Plass 1, 0150 Oslo</p>]

Я хочу что-то вроде

Address = ['Nobels gate 32, N-0268 Oslo', 'Akershus Festning, 0015 Oslo' ...]

Ответы [ 5 ]

1 голос
/ 05 июня 2019

Попробуйте следующий код. Он разделит адресную часть.

url = 'https://www.planetware.com/tourist-attractions-/oslo-n-osl-oslo.htm'
url_get = requests.get(url)
soup = BeautifulSoup(url_get.content, 'html.parser')
#
address=soup.find_all('p', class_="nospc")
addrlist=[]
for addr in address:
    addrlist.append(addr.text.split(':')[1].strip())

print(addrlist)

Вывод:

['Nobels gate 32, N-0268 Oslo', 'Akershus Festning, 0015 Oslo', 'Frederiks gate 2, 0164 Oslo', 'Universitetsgata 13, Oslo', 'Tøyengata 53, 0578 Oslo', 'Bellevue, Oslo', 'Frederiks gate 2, 0164 Oslo', 'Bygdøynesveien 39, 0286 Oslo', 'Kongeveien 5, 0787 Oslo', 'Karl Johansgt. 11, 0154 Oslo', 'Rådhuset, 0037 Oslo', 'Bryggegata 9, 0120 Oslo', 'Sars gate 1, 0562 Oslo', 'Kirsten Flagstads Plass 1, 0150 Oslo']
1 голос
/ 05 июня 2019

Вы можете использовать атрибут text для получения содержимого в тегах:

address=[x.text for x in soup.find_all('p', class_="nospc")]
print(address)
0 голосов
/ 05 июня 2019

Или используйте map:

 address = list(map(lambda x: x.text.split(':  ')[1], address))
 address

Выход:

['Nobels gate 32, N-0268 Oslo', 'Akershus Festning, 0015 Oslo', 'Frederiks gate 2, 0164 Oslo', 'Universitetsgata 13, Oslo', 'Tøyengata 53, 0578 Oslo', 'Bellevue, Oslo', 'Frederiks gate 2, 0164 Oslo', 'Bygdøynesveien 39, 0286 Oslo', 'Kongeveien 5, 0787 Oslo', 'Karl Johansgt. 11, 0154 Oslo', 'Rådhuset, 0037 Oslo', 'Bryggegata 9, 0120 Oslo', 'Sars gate 1, 0562 Oslo', 'Kirsten Flagstads Plass 1, 0150 Oslo']
0 голосов
/ 05 июня 2019

Попробуйте эту- find_all функция всегда возвращает список, text для получения содержимого внутри тега, split("Address:") разбивает строку и strip() удаляет пробелы в начале и конце строки.

from bs4 import BeautifulSoup as bs=
import  requests
#
url = 'https://www.planetware.com/tourist-attractions-/oslo-n-osl-oslo.htm'
url_get = requests.get(url)
soup = bs(url_get.content, 'html.parser')
#
addressArray =soup.find_all('p', class_="nospc")

address = []
for add in addressArray:
    address.append(add.text.split("Address:")[1].strip())

print(address)

O / P:

['Nobels gate 32, N-0268 Oslo', 'Akershus Festning, 0015 Oslo', 'Frederiks gate 2, 0164 Oslo', 'Universitetsgata 13, Oslo', 'Tøyengata 53, 0578 Oslo', 'Bellevue, Oslo', 'Frederiks gate 2, 0164 Oslo', 'Bygdøynesveien 39, 0286 Oslo', 'Kongeveien 5, 0787 Oslo', 'Karl Johansgt. 11, 0154 Oslo', 'Rådhuset, 0037 Oslo', 'Bryggegata 9, 0120 Oslo', 'Sars gate 1, 0562 Oslo', 'Kirsten Flagstads Plass 1, 0150 Oslo']
0 голосов
/ 05 июня 2019

метод .text делает это. Но вы не можете назвать это в списке из find_all Вы должны перебрать список

Address_text=[]

for a in address:
    Address_text.append(a.text)


In[14]: Address_text
Out[14]: 
['Address:  Nobels gate 32, N-0268 Oslo',
 'Address:  Akershus Festning, 0015 Oslo',
 'Address:  Frederiks gate 2, 0164 Oslo',
 'Address:  Universitetsgata 13, Oslo',
 'Address:  Tøyengata 53, 0578 Oslo',
 'Address:  Bellevue, Oslo',
 'Address:  Frederiks gate 2, 0164 Oslo',
 'Address:  Bygdøynesveien 39, 0286 Oslo',
 'Address:  Kongeveien 5, 0787 Oslo',
 'Address:  Karl Johansgt. 11, 0154 Oslo',
 'Address:  Rådhuset, 0037 Oslo',
 'Address:  Bryggegata 9, 0120 Oslo',
 'Address:  Sars gate 1, 0562 Oslo',
 'Address:  Kirsten Flagstads Plass 1, 0150 Oslo']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...