Как убрать динамический контент с сайта? - PullRequest
0 голосов
/ 16 апреля 2019

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

import scrapy
from ..items import AmazonsItem

class AmazonSpiderSpider(scrapy.Spider):
    name = 'amazon_spider'
    start_urls = ['https://www.amazon.in/s?k=agatha+christie+books&crid=3MWRDVZPSKVG0&sprefix=agatha%2Caps%2C269&ref=nb_sb_ss_i_1_6']

    def parse(self, response):
        items =  AmazonsItem()
        products_name = response.css('.s-access-title::attr("data-attribute")').extract()
        for product_name in products_name:
            print(product_name)
        next_page = response.css('li.a-last a::attr(href)').get()
            if next_page is not None:
                next_page = response.urljoin(next_page)
                yield scrapy.Request(next_page, callback=self.parse)

Теперь я использовал SelectorGadget для выбора класса, который мне нужно очистить, но в случае динамического веб-сайта он не работает.

  1. Так как мне очистить веб-сайт с динамическим контентом?
  2. в чем разница между динамическим и статическим контентом?
  3. Как извлечь другую информацию, такую ​​как цена и изображениес веб-сайта?и как получить конкретные классы, например, как цена?
  4. откуда мне знать, что данные создаются динамически?

Ответы [ 3 ]

2 голосов
/ 16 апреля 2019

Так как мне очистить сайт с динамическим контентом?

есть несколько вариантов:

  1. Используйте Selenium, который позволяет имитировать открытие браузера, отображение страницы, а затем получить исходный код HTML
  2. Иногда вы можете посмотреть на XHR и посмотреть, можете ли вы получить данные напрямую (как из API)
  3. Иногда данные находятся в тегах <script> источника html. Вы можете осуществлять поиск по ним и использовать json.loads() после манипулирования текстом в формате json

в чем разница между динамическим и статическим контентом?

Динамический означает, что данные генерируются из запроса после запроса начальной страницы. Статический означает, что все данные есть при исходном звонке на сайт

Как извлечь другую информацию, такую ​​как цена и изображение с веб-сайта? и как получить конкретные классы, например, как цена?

Обратитесь к первому вопросу

откуда мне знать, что данные создаются динамически?

Вы узнаете, что он создается динамически, если увидите его в исходном коде страницы инструментов разработчика, а не в исходном HTML-источнике, который вы запросили в первый раз. Вы также можете увидеть, были ли данные сгенерированы дополнительными запросами в инструменте dev и посмотреть Сеть -> XHR

Наконец

Amazon предлагает API для доступа к данным. Попробуй посмотреть и на это

0 голосов
/ 16 апреля 2019

Для очистки динамического содержимого (например, JScript) вы можете использовать Srapy Splash. Посмотрите на это: https://www.google.com/amp/s/blog.scrapinghub.com/2015/03/02/handling-javascript-in-scrapy-with-splash%3fhs_amp=true

0 голосов
/ 16 апреля 2019

Если вы хотите загрузить динамический контент, вам нужно будет смоделировать веб-браузер. Когда вы делаете HTTP-запрос, вы получите только текст, возвращенный этим запросом, и ничего более. Чтобы смоделировать веб-браузер и взаимодействовать с данными в браузере, используйте пакет selenium for Python:

https://selenium -python.readthedocs.io /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...