#python #selenium #selenium-webdriver #web-scraping #beautifulsoup
Вопрос:
Я пытаюсь удалить данные из окна, которое появляется при наведении указателя мыши на маркер в режиме просмотра карты, и удалить значение «Доступные дни» из окна.
изображение текста, которое я пытаюсь очистить
Я изо всех сил пытаюсь навести курсор на все фиолетовые маркеры один за другим в режиме просмотра карты с помощью python, webdriver и BeautifulSoup. Мне удалось написать приведенный ниже код, но переменная mapMarkers всегда пуста.
from bs4 import BeautifulSoup
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.airdna.co/vacation-rental-data/app/us/california/santa-monica/overview")
input("Press Enter to continue...") # wait until page loads and tutorial is closed
mapMarkers = driver.find_elements_by_class_name("Page__RightColumn-sc-291lxm-3") # get a list of marker element
target_list = []
for i in range(len(mapMarkers)):
mapMarkers[i].click() # click to appear hover over window
html = driver.page_source
soup = BeautifulSoup(html, "lxml")
days = soup.find_all("p", {"class": ['info-window__statistics-value']})
link = soup.find_all("a", {"class": ['info-window__property-link']})
target_list.append( {
days[0].text.replace('n', '').replace(' ', ''),
link[0].attrs['href']
} )
driver.quit()
Ответ №1:
Некоторые сайты используют частный API для извлечения своих данных, и ваш сайт является одним из них Для получения данных API, необходимых для проверки сетевой активности.
щелкните правой кнопкой мыши на странице и нажмите Проверить, чтобы открыть DevTools. Перейдите в раздел «Сеть» и найдите API, затем нажмите «Предварительный просмотр», чтобы просмотреть содержимое.
Щелкните правой кнопкой мыши, а затем скопируйте curl, а затем переведите команду на python с помощью этого сайта
Ваш код будет выглядеть следующим образом:
import requests
headers = {
'authority': 'api.airdna.co',
'sec-ch-ua': '"Chromium";v="94", "Google Chrome";v="94", ";Not A Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36',
'sec-ch-ua-platform': '"Windows"',
'accept': '*/*',
'origin': 'https://www.airdna.co',
'sec-fetch-site': 'same-site',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
'referer': 'https://www.airdna.co/',
'accept-language': 'en-US,en;q=0.9',
}
params = (
('access_token', 'MjkxMTI|8b0178bf0e564cbf96fc75b8518a5375'),
('city_id', '59053'),
('start_month', '10'),
('start_year', '2018'),
('number_of_months', '36'),
('currency', 'native'),
('show_regions', 'true'),
)
response = requests.get('https://api.airdna.co/v1/market/property_list', headers=headers, params=params)
results = response.json()["properties"]
for result in results[0:20]:
title = result["title"]
days_available = result["days_available"]
print (f"{title} : {days_available}")
Результат:
Panoramic Ocean View Studio Loft : 274
Private 1906 Bungalow : 364
Serene Garden Room by the Beach!!! : 188
Bright New Beachside Master Suite : 171
Bright New Beachside Bedroom : 164
Pvt bedroom-pvt bath amp; entryway. Ocean front Views : 155
Elegant Design Apartment with Courtyard Garden Dining Space : 224
Liz''s Beachy Retreat in Santa Monica! : 55
Santa Monica One BedRoom Apt.(Ocean Breeze B) : 26
ROOM amp; BATH. 4 BLOCKS TO OCEAN. N OF WILSHIRE. : 114
Comfy Room - Amazing Location! : 178
Steps to Beach in Gorgeous Suite! : 84
Stunning Three Bedroom Santa Monica Beach Home : 224
Santa Monica with parking/Montana close to beach : 156
PRIVATE ROOM W/BR IN SANTA MONICA : 293
Private Room with Bathroom at Beach :)Just Perfect : 334
Newly Furnished! 1 Bed Beach Condo : 45
Santa Monica Beach House!Prime area : 264
Santa Monica Canyon Pied-a-Terre : 355
Santa Monica Beach Suite 5 : 276
Комментарии:
1. Большое спасибо! это лучше, чем то, что я искал.
2. Всегда пожалуйста 🙂