Что делает'?' в C++?

Не удалось найти ответ с помощью запроса. Но вы можете использовать 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)

65
задан 11 revs, 9 users 40% 7 September 2014 в 09:55
поделиться

6 ответов

Обычно его называют условным оператором , и при использовании так:

condition ? result_if_true : result_if_false

... если условие оценивается как true , выражение оценивается как result_if_true , в противном случае оно оценивается как result_if_false .

Это синтаксический сахар , и в данном случае, его можно заменить на

int qempty()
{ 
  if(f == r)
  {
      return 1;
  } 
  else 
  {
      return 0;
  }
}

Примечание: Некоторые люди называют ?: его как « троичный оператор », потому что это единственный троичный оператор (то есть оператор, который принимает три аргумента) на языке, который они используют.

115
ответ дан 24 November 2019 в 15:19
поделиться

Это троичный оператор, он в основном встроенный, если оператор

x ? y : z

работает подобно

if(x) y else z

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

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

14
ответ дан 24 November 2019 в 15:19
поделиться

Вы можете просто переписать его как:

int qempty(){ return(f==r);}

Что делает то же самое, что сказано в других ответах.

6
ответ дан 24 November 2019 в 15:19
поделиться

Он называется условным оператором .

Его можно заменить на:

int qempty(){ 
    if (f == r) return 1;
    else return 0;
}
5
ответ дан 24 November 2019 в 15:19
поделиться

Это условный оператор.

a? b: c

Это сокращение для IF / THEN / ELSE.

означает: если a истинно, вернуть b, иначе вернуть c. В этом случае, если f == r, вернуть 1, иначе вернуть 0.

3
ответ дан 24 November 2019 в 15:19
поделиться

Знак вопроса является условным оператором. Код означает, что если f == r, то возвращается 1, в противном случае возвращается 0. Код может быть переписан как

int qempty()
{
  if(f==r)
    return 1;
  else
    return 0;
}

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

2
ответ дан 24 November 2019 в 15:19
поделиться
Другие вопросы по тегам:

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