красивый суп, автоматически конвертирующий строку в формат времени? - PullRequest
1 голос
/ 09 апреля 2020

Я пытаюсь очистить div, у которого есть информация о времени с веб-сайта (используя beautifulsoup + selenium):

options = webdriver.ChromeOptions() 
options.add_argument('--no-sandbox')
options.add_argument('--window-size=1420,1080')
options.add_argument('--headless')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-gpu')
options.add_argument("--disable-notifications")
options.add_experimental_option('useAutomationExtension', False)
options.binary_location='/usr/bin/google-chrome-stable'
chrome_driver_binary = "/usr/bin/chromedriver"
driver = webdriver.Chrome(chrome_driver_binary, 
chrome_options=options)

#Set base url (San Francisco)
base_url = 'https://www.bandsintown.com/?place_id=ChIJIQBpAG2ahYAR_6128GcTUEo&page='


events = []
eventContainerBucket = []

for i in range(1,35):
    #cycle through pages in range
    driver.get(base_url + str(i))
    pageURL = base_url + str(i)
    print(pageURL)

    # get events links
    event_list = driver.find_elements_by_css_selector('div[class^=_3buUBPWBhUz9KBQqgXm-gf] a[class^=_3UX9sLQPbNUbfbaigy35li]')
    # collect href attribute of events in even_list
    events.extend(list(event.get_attribute("href") for event in event_list))


# iterate through all events and open them.
item = {}
allEvents = []
for event in events:

      soup = bs(driver.find_element_by_css_selector('[class^=Y_sOCKLIZzxDZWauPTJlk]').get_attribute('outerHTML'))
      soup2 = bs(driver.find_element_by_css_selector('[class^=_2j34xcqD4slSOyTCMbA1dY]').get_attribute('outerHTML'))


        # Get time
        time = soup.select_one('img + div + div').text
        print(time)

Это время преобразует время в UT C, когда я этого не делаю хочу этого. Я просто хочу вытащить необработанный текст для каждого раза, то есть 9:00 вечера. Я сразу попытался разобрать необработанную строку, поэтому она просто захватывает строку:

time = soup.select_one('img + div + div').text
' '.join(time.split(' ')[0:2])
#time.replace('UTC','')

print(time)

Но она все еще печатается с UT C, т.е. 2:00 AM UT C.

Есть ли способ вытянуть только необработанную строку, прежде чем она автоматически преобразуется во время? Я не хочу иметь дело с часовыми поясами, и я не думаю, что мне нужно для этого проекта. Просто хочу сырой строки.

1 Ответ

0 голосов
/ 10 апреля 2020

Я не уверен, почему вы используете Beautiful Soup select. Вы можете просто получить текст элемента с помощью Selenium?

for event in events:
    # using locator from your example below, although it did not work for me
    element = driver.find_element_by_css_selector('[class^=Y_sOCKLIZzxDZWauPTJlk]')

    # Get time
    time = element.text
    print(time)

Вывод:

6:00 PM PDT

Не уверен, что это то, что вы ищете, но, надеюсь, это полезно. Удачи!

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