Nano Hash - криптовалюты, майнинг, программирование

Очистка страницы обзора на основе Ajax с помощью Scrapy

Там. Я пытаюсь очистить веб-сайт. Все работает нормально, проблема в том, что я не могу понять, как очистить содержимое ajax. Веб-сайт, который я очищаю, использует содержимое ajax для получения страниц обзора с помощью почтового запроса. Вот что говорит инструмент chrome dev.

Инструмент Chrome Dev

Я много исследовал, но не могу понять, как очищать содержимое ajax. Я знаю о данных формы и запросе отправки или получения, но я не могу их использовать. Более того, я не знаю, как парсить нужный мне контент. Я предполагаю, что его нельзя очистить с помощью XPath или селекторов. Кроме того, если вы проверите URL-адрес, в разделе обзора есть кнопка «Читать далее», возможно ли очистить его, используя ту же стратегию, что и для контента ajax.

Мне удалось очистить первую страницу, но я застрял на следующей_странице. вот как паук завершает работу, он получает URL-адрес следующей страницы, запрашивает, но ничего не происходит. Журнал вывода паука Вот код...

import scrapy
from scrapy.http import Request, FormRequest
from scrapy.crawler import CrawlerRunner
from scrapy.utils.log import configure_logging
from quo.items import QuoItem

class MySpider(scrapy.Spider):
    name = 'quotes'


    def start_requests(self):
        yield scrapy.Request('https://www.daraz.pk/infinix-s2-pro-32gb-3gb-4g-lte-black-6619437.html', self.parse)


    def parse(self, response):
         for href in response.xpath('//div[@class="reviews"]'):
          item=QuoItem()


          Rating=response.xpath('//*[@id="ratingReviews"]/section[3]/div[2]/article/div[2]/div[1]/div/div/@style').extract()
          if Rating:

              item['Rating']=Rating


          ReviewT=response.xpath('//*[@id="ratingReviews"]/section[3]/div[2]/article/div[2]/div[2]/text()').extract()
          if ReviewT:
              item['ReviewT']=ReviewT

          yield item

          next_page=response.xpath('(//ul[@class="osh-pagination -horizontal"]/li[@class="item"]/a[@title]/@href)[last()]').extract() #xpath for next button which contains the url.
          if next_page:

                       yield scrapy.Request(response.urljoin(next_page[0]), callback=self.parse)

В комментариях запрошено обновление:
Я пытался его использовать, но, думаю, не очень хорошо. Это ничего не делает. Вот дополнение к коду

next_page=response.xpath('(//ul[@class="osh-pagination -horizontal"]/li[@class="item"]/a[@title]/@href)[last()]').e‌​xtract() 
if next_page: 
    yield scrapy.Request(response.urljoin(next_page[0]), callback=self.parse_jsonloads) 

def parse_jsonloads(self, response): 
    data=json.loads(response.body) 

    for item in data.get('reviews', []): 
        ReviewT=item.get('author') 

    yield json.loads(response.body_as_unicode())

  • Содержимое AJAX основано на втором запросе, сделанном с помощью javascript вашим веб-браузером после загрузки страницы, на сервер для запроса данных, которые страница затем отображает или обрабатывает. Вам просто нужно найти URL-адрес, на который делается запрос (используя, скажем, xpath, если URL-адрес находится в исходном файле), а затем сделать запрос на этот URL-адрес. 01.07.2017
  • next_page =response.xpath.... делает то же самое. Он получает URL-адрес и делает запрос.... yield scrapy.Request... если вы видите выходной файл журнала, который я прикрепил, вы увидите, что он делает запрос, но ничего не происходит. Пожалуйста, укажите, если я что-то не понимаю здесь 01.07.2017
  • Трудно быть уверенным, так как я не могу протестировать код, но вы, похоже, используете тот же обратный вызов (self.parse) для ответа json, что и для ответа HTML. Ответ JSON — это просто файл JSON, без HTML или XML для использования XPATH. Используйте другой обратный вызов для этого запроса, а затем проанализируйте данные, используя просто yield json.loads(response.body_as_unicode()) - это должно вернуть то, что вы хотите. 01.07.2017
  • Я пытался использовать его, но я думаю, что я не использовал его хорошо. Это ничего не делает. Вот дополнение к коду next_page=response.xpath('(//ul[@class=osh-pagination -horizontal]/li[@class=item]/a[@title]/@href)[last() ]').extract() if next_page: yield scrapy.Request(response.urljoin(next_page[0]), callback=self.parse_jsonloads) def parse_jsonloads(self, response): data=json.loads(response.body) для элемент в data.get('отзывы', []): ReviewT=item.get('автор') yield json.loads(response.body_as_unicode()) 01.07.2017

Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..