Очистка веб — страниц с помощью Excel VBA для получения подробной информации об отеле

#excel #vba #web-scraping

Вопрос:

Я пытаюсь соскрести www.booking.com чтобы получить некоторую информацию об отеле на основе поиска, который я провел на веб-сайте. URL-адрес содержит мой поиск, такой как адрес, регистрация и т. Д.

После поиска я пытаюсь наскрести название отеля, счет, расстояние и другую информацию, не вдаваясь в подробности (нажав на отель). Но в некотором роде я не могу пройти через шаги, чтобы получить эту информацию.

Если я прав, все результаты поиска помещаются в идентификатор «hotellist_inner», который содержит все отдельные результаты поиска в классе «sr_property_block». Но я уже получаю ошибку в первой строке: Для каждого элемента в objIE.Document.getElementsById(«hotellist_inner»), так как кажется, что результат getElementById пуст.

Смотрите мой пример кода ниже.

 Sub test()

Dim ws As Worksheet: Set ws = Sheets("scrape")
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.Application")


Dim url As String
url = ws.Range("A1")

With objIE
    .navigate url
    .Visible = True
End With

'wait IE
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop

ResRw = 2

For Each itemEle In objIE.Document.getElementById("hotellist_inner")
     'Every booking goes on a new line, so reset the column to 1
    ResCol = 1
    For Each d In itemEle.getElementByClassName("sr_property_block ") 'Each result (hotel) has this Class
                                 
         'For the next result, add 1 to the column
         ResCol = ResCol   1
    Next d
    
    'For the next result, add 1 to the row
    ResRw = ResRw   1
Next

objIE.Quit
Set objIE = Nothing
End Sub
 

Пример URL-адреса: https://www.booking.com/searchresults.nl.html?label=gen173nr-1DCAEoggI46AdIM1gEaKkBiAEBmAEcuAEXyAEM2AED6AEB-AEDiAIBqAIDuAL-25KJBsACAdICJDQ5MDk4ZmU4LWE3MDYtNGEwNi1hZTY2LWYzYTc5YmQwZWU2M9gCBOACAQamp;sid=c7a70093e9732a158e970a642f2af63famp;sb=1amp;sb_lp=1amp;src=indexamp;src_elem=sbamp;error_url=https://www.booking.com/index.nl.html?label=gen173nr-1DCAEoggI46AdIM1gEaKkBiAEBmAEcuAEXyAEM2AED6AEB-AEDiAIBqAIDuAL-25KJBsACAdICJDQ5MDk4ZmU4LWE3MDYtNGEwNi1hZTY2LWYzYTc5YmQwZWU2M9gCBOACAQ;sid=c7a70093e9732a158e970a642f2af63f;sb_price_type=total&;amp;ss=Amsterdam, Noord-Holland, Nederlandamp;is_ski_area=amp;checkin_year=2021amp;checkin_month=8amp;checkin_monthday=24amp;checkout_year=2021amp;checkout_month=8amp;checkout_monthday=31amp;group_adults=1amp;group_children=0amp;no_rooms=1amp;b_h4u_keep_filters=amp;from_sf=1amp;ss_raw=Amsterdamamp;ac_position=0amp;ac_langcode=nlamp;ac_click_type=bamp;dest_id=-2140479amp;dest_type=cityamp;iata=AMSamp;place_id_lat=52.372898amp;place_id_lon=4.893amp;search_pageview_id=694a3bbf21c20007amp;search_selected=trueamp;search_pageview_id=694a3bbf21c20007amp;ac_suggestion_list_length=5amp;ac_suggestion_theme_list_length=0

У кого-нибудь есть идеи, как это исправить?

Tnx!

Комментарии:

1. Пожалуйста, укажите пример URL

2. Что-нибудь происходит? какие-нибудь ошибки?