Webscraping название мероприятия, место, цена - PullRequest
0 голосов
/ 08 марта 2020

Это веб-сайт, который я собираю.

Я использую BeautifulSoup в Jupyter, мне было интересно, как я могу очистить этот веб-сайт от имени события, местоположения и цены. Я нашел их местоположение в инструменте проверки.

Прямо сейчас я нашел имя события, но чувствую, что мой процесс длинный и ненужный.

Я планировал поместить все очищенные данные о событиях из эта страница в фрейме данных.

import pandas as pd
import requests
import bs4
from bs4 import BeautifulSoup

kpbs_link = "https://www.kpbs.org/events/search/?unifyevents=true&vertical_events=true&base_arts=true&base_category=137/"
page = requests.get(kpbs_link)
soup = BeautifulSoup(page.text)

events = soup.find_all('h4', {"class": "list_title"})

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

1 Ответ

2 голосов
/ 08 марта 2020

Вы можете попробовать запустить приведенный ниже код. Вам нужно обратить внимание на элемент затрат, поскольку он присутствует не для всех событий, поэтому я поставил условие для этого. Он извлекает элементы списка со страницы для названия, местоположения и цены события:

import requests
from bs4 import BeautifulSoup
import pandas as pd
name = []
location = []
price = []

url = "https://www.kpbs.org/events/search/?unifyevents=true&vertical_events=true&base_arts=true&base_category=137"  # no trailing /
try:
    page = requests.get(url)

    soup = BeautifulSoup(page.text, 'html.parser')

    items = soup.find_all("li", {"class": "item"})
    for item in items:
        name.append(item.find('h4', {"class": "list_title"}).text.strip())
        location.append(item.find('p', {"class": "list_place"}).text.strip())
        try:
            price.append(item.find('p', {"class": "cost"}).text.strip())
        except:
            price.append('NA')

    final_df = pd.DataFrame(
    {'title': name,
     'location': location,
     'price': price
    })
except Exception as e:
    print(e)
    print("continuing....")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...