#javascript #python #xpath #web-scraping #scrapy
#javascript #python #xpath #очистка веб-страниц #scrapy
Вопрос:
Я пытаюсь проанализировать главную страницу свойств https://www.realtyatlas.co.za/search ?areas[0][town]= Bellvilleamp;status=Для Sale, точнее, я хотел бы извлечь ссылку href из класса атрибутов, который находится здесь, и создать ссылку для перехода:
<div class="col-md-4">
<a class="property-item__wrap" href="/loevenstein-apartment-for-sale-1917472">
Однако все комбинации, которые я пробовал, не дают результата.
Я также знаю об API (https://jf6e1ij07f.execute-api.eu-west-1.amazonaws.com/p/search ), однако в ответе я не вижу URL-адреса свойств, что в таком случае бесполезно.
Я что-то упускаю или какие-либо идеи о том, что я делаю неправильно?
Вот некоторый код:
for prop in response.xpath("//div[@class='col-md-4']"):
... link = prop.xpath("./a[@class='property-item__wrap']/@href").get()
Ответ №1:
Как вы уже обнаружили, информация о свойствах поступает из упомянутого вами вызова API, а не напрямую встроена в сайт, к которому вы выполняете запрос (из-за рендеринга javascript), поэтому вам нужно вызвать API непосредственно из вашего запроса scrapy, чтобы получить эту информацию (это POST-запрос с определенными данными, поэтому вам нужно создать его самостоятельно)
Я могу ошибаться, но похоже, что этот сайт генерирует URL-адрес «на лету», в зависимости от типа предлагаемого им свойства, поэтому вы все равно можете создать URL-адрес самостоятельно, используя данные, поступающие из API:
https://www.realtyatlas.co.za/{suburb}-{propertyType}-{propertyStatus}-{propertyid}
где следующие переменные могут быть заменены на переменные, поступающие из API