Соскоб в Интернете при прокрутке вниз необходим

opts_chunk$set() - это то, что вам нужно. Любой «набор» будет по умолчанию для последующих фрагментов (если не будет перезаписан на основе chunk by by chunk)

```{r setup}
library(knitr)
opts_chunk$set(eval = TRUE, include= TRUE)
````

Затем вы можете изменить, как вы сочтете нужным.

1
задан SoftTimur 5 March 2019 в 02:59
поделиться

4 ответа

Бесконечные прокрутки на веб-странице основаны на функциональности Javascript. Поэтому, чтобы выяснить, к какому URL-адресу мы должны обратиться и какие параметры использовать, нам нужно либо тщательно изучить код JS, работающий внутри страницы, либо, предпочтительно, изучить запросы, которые браузер выполняет при прокрутке страницы. Мы можем изучать запросы, используя Инструменты разработчика. См. Пример для quora

. Чем больше вы прокручиваете вниз, тем больше генерируется запросов. поэтому теперь ваши запросы будут выполняться по этому URL-адресу вместо обычного URL-адреса, но помните, что нужно отправлять правильные заголовки и данные о загрузке.

другим более простым решением будет использование селена

0
ответ дан Majd Msahel 5 March 2019 в 02:59
поделиться

Я рекомендую использовать селен , а не бс.
Селен может контролировать браузер и анализ. например, прокрутка вниз, нажатие кнопки и т. д.

Этот пример предназначен для прокрутки вниз, чтобы получить всех похожих пользователей в Instagram.
https://stackoverflow.com/a/54882356/5611675

0
ответ дан predicty 5 March 2019 в 02:59
поделиться

Не удалось найти ответ с помощью запроса. Но вы можете использовать Selenium. Сначала распечатайте количество вопросов при первой загрузке, затем отправьте клавишу End для имитации прокрутки вниз. Вы можете видеть, что количество вопросов изменилось с 20 до 40 после отправки ключа завершения.

Я использовал driver.impлыly подождать 5 секунд, прежде чем снова загружать DOM, в случае, если сценарий загружается слишком быстро, прежде чем загружается DOM. Вы можете улучшить, используя ЕС с селеном.

Страница загружает 20 вопросов за прокрутку. Так что, если вы ищете 100 вопросов, вам нужно отправить ключ завершения 5 раз.

Для использования кода ниже вам необходимо установить chromedriver. http://chromedriver.chromium.org/downloads

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.by import By

    CHROMEDRIVER_PATH = ""
    CHROME_PATH = ""
    WINDOW_SIZE = "1920,1080"

    chrome_options = Options()
    # chrome_options.add_argument("--headless")  
    chrome_options.add_argument("--window-size=%s" % WINDOW_SIZE)
    chrome_options.binary_location = CHROME_PATH
    prefs = {'profile.managed_default_content_settings.images':2}
    chrome_options.add_experimental_option("prefs", prefs)

    url = "https://www.quora.com/topic/Stack-Overflow-4/all_questions"

    def scrape(url, times):

    if not url.startswith('http'):
        raise Exception('URLs need to start with "http"')

    driver = webdriver.Chrome(
    executable_path=CHROMEDRIVER_PATH,
    chrome_options=chrome_options
    )

    driver.get(url)

    counter = 1
    while counter <= times:

        q_list = driver.find_element_by_class_name('TopicAllQuestionsList')
        questions = [x for x in q_list.find_elements_by_xpath('//div[@class="pagedlist_item"]')]
        q_len = len(questions)
        print(q_len)

        html = driver.find_element_by_tag_name('html')
        html.send_keys(Keys.END)

        wait = WebDriverWait(driver, 5)
        time.sleep(5)

        questions2 = [x for x in q_list.find_elements_by_xpath('//div[@class="pagedlist_item"]')]
        print(len(questions2))

        counter += 1

    driver.close()

if __name__ == '__main__':
    scrape(url, 5)
0
ответ дан Y Y 5 March 2019 в 02:59
поделиться

Если контент загружается только при «прокрутке вниз», это, вероятно, означает, что страница использует Javascript для динамической загрузки контента.

Вы можете попробовать использовать веб-клиент, такой как PhantomJS , чтобы загрузить страницу и выполнить на ней javascript, а также имитировать прокрутку, вводя некоторые JS, такие как document.body.scrollTop = sY; ( Имитация события прокрутки) используя Javascript ).

0
ответ дан Grace Fu 5 March 2019 в 02:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: