XHR-запрос извлекает много HTML-контента, как я могу его удалить / отсканировать? - PullRequest
0 голосов
/ 24 февраля 2019

Итак, я пытаюсь очистить сайт с бесконечной прокруткой.

Я следую этому руководству по удалению бесконечной прокрутки веб-страниц: https://blog.scrapinghub.com/2016/06/22/scrapy-tips-from-the-pros-june-2016

Но приведенный пример выглядит довольно просто, это упорядоченный объект JSON с нужными вам данными.

Я хочу разобраться с этим https://www.bahiablancapropiedades.com/buscar#/terrenos/venta/bahia-blanca/todos-los-barrios/rango-min=50.000,rango-max=350.000

XHR-ответ для каждой страницы странный, выглядит как испорченный HTML-код Так выглядит вкладка Сеть

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

В прошлом я успешно делал это с помощью обычной нумерации страниц и правил, руководствуясь xpaths.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Это не поврежденный HTML, он экранирован, чтобы предотвратить его нарушение JSON.Некоторые веб-сайты будут возвращать простые данные JSON, а другие, например, этот, будут возвращать фактический HTML-код, который необходимо добавить.

Чтобы получить элементы, необходимые для извлечения HTML-кода из ответа JSON и создания собственного parsel Selector (это то же самое, что и при использовании response.css(...)).

Вы можете попробовать следующее в оболочке scrapy, чтобы получить все ссылки на одной из "следующих" страниц:

scrapy shell https://www.bahiablancapropiedades.com/buscar/resultados/3

import json
import parsel

json_data = json.loads(response.text)
sel = parsel.Selector(json_data['view']) # view contains the HTML
sel.css('a::attr(href)').getall()
0 голосов
/ 24 февраля 2019

https://www.bahiablancapropiedades.com/buscar/resultados/0

Это URL XHR.При прокрутке страницы будет отображаться 8 записей на запрос.Так что одно дело получай все записи XPath.эти записи делятся на 8. Появится количество запросов XHR.сделать ниже процесс.Ваш вопрос решит.Я получаю ту же проблему, что и я.Я применил ниже логику.оно разрешится.

pagination_count = xpath of presented number

value = int(pagination_count) / 8

for pagination_value in value:
   url = https://www.bahiablancapropiedades.com/buscar/resultados/+[pagination_value]

передайте этот URL-адрес в вашу функцию scrapy.

...