opts_chunk$set()
- это то, что вам нужно. Любой «набор» будет по умолчанию для последующих фрагментов (если не будет перезаписан на основе chunk by by chunk)
```{r setup}
library(knitr)
opts_chunk$set(eval = TRUE, include= TRUE)
````
Затем вы можете изменить, как вы сочтете нужным.
Бесконечные прокрутки на веб-странице основаны на функциональности Javascript. Поэтому, чтобы выяснить, к какому URL-адресу мы должны обратиться и какие параметры использовать, нам нужно либо тщательно изучить код JS, работающий внутри страницы, либо, предпочтительно, изучить запросы, которые браузер выполняет при прокрутке страницы. Мы можем изучать запросы, используя Инструменты разработчика. См. Пример для quora
. Чем больше вы прокручиваете вниз, тем больше генерируется запросов. поэтому теперь ваши запросы будут выполняться по этому URL-адресу вместо обычного URL-адреса, но помните, что нужно отправлять правильные заголовки и данные о загрузке.
другим более простым решением будет использование селена
Я рекомендую использовать селен , а не бс.
Селен может контролировать браузер и анализ. например, прокрутка вниз, нажатие кнопки и т. д.
Этот пример предназначен для прокрутки вниз, чтобы получить всех похожих пользователей в Instagram.
https://stackoverflow.com/a/54882356/5611675
Не удалось найти ответ с помощью запроса. Но вы можете использовать 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)
Если контент загружается только при «прокрутке вниз», это, вероятно, означает, что страница использует Javascript для динамической загрузки контента.
Вы можете попробовать использовать веб-клиент, такой как PhantomJS , чтобы загрузить страницу и выполнить на ней javascript, а также имитировать прокрутку, вводя некоторые JS, такие как document.body.scrollTop = sY;
( Имитация события прокрутки) используя Javascript ).