численность населения в реальном времени с использованием веб-соскоб - PullRequest
0 голосов
/ 08 апреля 2020

Я работаю над проектом по прогнозированию, и в этом проекте нам нужны данные о населении страны для прогноза чего-либо, я хочу взять численность населения в режиме реального времени с веб-сайта, который я пробовал, но он возвращает "получение данных ..." "и я в полном замешательстве

import bs4
import requests
from bs4 import BeautifulSoup

def population():

    r=requests.get('https://www.worldometers.info/world-population/india-population/')
    soup=bs4.BeautifulSoup(r.text,'html')
    population=soup.find('div',{'class':'maincounter-number'}).find('span').text
    return population

while True:
    print('the current population:' +str(population()))

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

Если вы думаете об использовании селена для получения обновленного количества населения, вам следует соблюдать следующее:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

link = 'https://www.worldometers.info/world-population/india-population/'

def get_population_count(wait,link):
    driver.get(link)
    while True:
        item = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"span[rel='india-population']"))).text
        if "retrieving data" not in item:
            break
    return item

if __name__ == '__main__':
    with webdriver.Chrome() as driver:
        wait = WebDriverWait(driver,10)
        print(get_population_count(wait,link))
0 голосов
/ 08 апреля 2020
import requests
from bs4 import BeautifulSoup


def main(url):
    r = requests.get(url)
    soup = BeautifulSoup(r.content, 'html.parser')
    target = soup.find(
        "div", class_="col-md-8 country-pop-description").find_all_next("strong")[1]
    print(target.text)


main("https://www.worldometers.info/world-population/india-population/")

Выход:

1,376,863,120
...