Python 3 - Удалите ненужные результаты при просмотре веб-страниц - PullRequest
0 голосов
/ 30 апреля 2018

У меня проблема с просмотром веб-страниц для этой конкретной страницы для какого-либо бизнеса, в результате чего появляется более одного вида бизнеса. Эти инструкции работают нормально, если бизнес относится только к одной категории (аптека на примере):

# import libraries
from urllib.request import urlopen
from bs4 import BeautifulSoup

quote_page = ['http://www.paginasamarillas.com.ar/buscar/q/farmacia/p-1/']
print (quote_page)

data = []
	
for pg in quote_page:
	page = urlopen(pg)
	soup = BeautifulSoup(page, 'html.parser')

	# Search company name and business type
	nombreBox = soup.find('div', attrs={'class':'t1 business-name', 'itemprop':'name'})
	tipoBox = soup.find('div', attrs={'class':'business-categories'})
	
	# Clean Results
	nombre = nombreBox.text.strip()
	tipo = tipoBox.text.strip()
	# tipo = tipo.split(" ")[0] # Tried with split and print only first word but is not working

	
	# Record results on array
	data.append((nombre, tipo))
	print (nombre, tipo)
#####################  RESULTS #######################

['http://www.paginasamarillas.com.ar/buscar/q/farmacia/p-1/']
Farmacia Iphais Farmacias
________^______ ____^____
 Company Name    BZ type
######################################################  

Но некоторые компании относятся к нескольким категориям и имеют ссылку «+» с более подробной информацией, как показано ниже:

#####################  RESULTS #######################

['http://www.paginasamarillas.com.ar/buscar/q/farmacia/p-1/'] 
Farmacia Zimerman Farmacias  #Starting here there are more business kind I don´t want it

 Perfumerias                                                                                                                                                                                                                                                                             mas +                                                                                                                   menos -     

    ###################################################### 

Я просто хочу сохранить первый вид бизнеса или категорию вместо нескольких и отказаться от всех результатов по ссылке «больше +».

Заранее спасибо за помощь и предложения !!

1 Ответ

0 голосов
/ 30 апреля 2018

Внутри элемента бизнес-категорий есть тег «a», в котором хранится первая характеристика. Вы можете искать в элементе tipoBox этот элемент, а затем просто распечатать его.

tipoBox = soup.find('div', attrs={'class':'business-categories'})
first_element = tipoBox.find('a')

Я заметил, что в настоящее время ваша программа будет печатать только первый список на веб-сайте. Предполагая, что вы хотите просмотреть все списки на сайте, я переписал вашу программу, чтобы получить название заведения и первое описание:

  for pg in quote_page:
    page = urlopen(pg)
    soup = BeautifulSoup(page, 'html.parser')

    business = soup.find('ul', class_='businesses')
    links = business.find_all('li', class_='business')

    data = []
    for link in links:
        nombreBox = link.find('div', attrs={'class':'t1 business-name', 'itemprop':'name'})
        category = link.find('div', attrs={'class':'business-categories'})
        first_element = category.find('a')
        data.append((nombreBox.text.strip(), first_element.text.strip()))

    return data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...