Beautifulsoup: невозможно найти ожидаемые значения - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь использовать Beautifulsoup для анализа моего расписания на веб-сайте компании. Пример сайта (не мой, в целях конфиденциальности):

screenshot

Я пытался пройтись по разным классам в надежде найти информацию, но не могу.

from bs4 import BeautifulSoup
import requests

source = requests.get('https://www.floydsbarbershop.com/leetsdale').text
soup = BeautifulSoup(source,'lxml')

match = soup.find_all('span',class_='name')
for item in match:
    print(item)

Когда я запускаю этот код, я не нахожу никаких фактических значений имени. Я надеюсь, что смогу перебирать каждое имя до тех пор, пока не найду свое, а затем пройду оставшиеся биты, чтобы вытащить данные моего расписания.

1 Ответ

1 голос
/ 10 мая 2019

Попробуйте следующий код:

import requests

url = "https://www.floydsbarbershop.com/modules/staff/ajax.aspx"

headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0"}
data={"FromDayFormat": "ddd - MMM d", "ToDayFormat": "ddd d", "StartDay": "0", "EndDay": "7", "LocationId": "31", "F": "GetScheduleForLocation"}
source = requests.post(url, headers=headers, data=data).json()

for data_raw in source:
    print(data_raw["Name"])

вы отправляете запрос на публикацию по неправильной ссылке (вам не нужен Beautifulsoup)


С расписаниями:

Если вы также хотите получить доступ к их распечатанным графикам, попробуйте использовать следующий код:

import requests

url = "https://www.floydsbarbershop.com/modules/staff/ajax.aspx"

headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0"}
data={"FromDayFormat": "ddd - MMM d", "ToDayFormat": "ddd d", "StartDay": "0", "EndDay": "7", "LocationId": "31", "F": "GetScheduleForLocation"}
source = requests.post(url, headers=headers, data=data).json()

for data_raw in source:
    for schedule in data_raw['ScheduleDays']:
        if not(schedule['FromHour'] == None):
            print(f"{data_raw['Name']} is working on {schedule['DayRange']} from {schedule['FromHour']}{schedule['FromHourDayPart']} to {schedule['ToHour']}{schedule['ToHourDayPart']}")
    print("----------") 

(PS: вы можете удалитьprint("----------") если вам это не нужно)

Надеюсь, это поможет!

...