Как использовать Python Селен xpath получить информацию о сайте, Получить шесть континентов, ранжирование населения страны, поставить цифры в порядке убывания - PullRequest
1 голос
/ 11 марта 2020

Веб-сайт: https://www.ifreesite.com/population

Получите шесть континентов, ранжированных по численности населения страны, расставьте числа в порядке убывания.

Ожидаемый результат:

非洲 АФРИКА

[1.] ["Бурунди", "蒲 隆 地 / 布隆迪", "11,178,921"]

[2.] ["Джибути", "吉布 地 / 吉布提 "," 887,861 "]

[3.] [" Коморские Острова "," 葛摩 / 科摩羅 "," 788,474 "]

亞洲 АЗИЯ

[1.] ["Китай", "中國", "1 427 647 786"]

[2.] ["Япония" , "日本", "126 573 481"]

[3.] ["Республика c Кореи", "南韓", "50 293 439"]

10

Следующий шаг. как я могу это сделать, я учусь, студент Python нужна помощь. Спасибо.

Код:

from selenium import webdriver
import time
from bs4 import BeautifulSoup
import requests

driver_path = r'C:\Users\leon_shih\AppData\Local\Programs\Python\Python36\chromedriver.exe'

driver = webdriver.Chrome(executable_path=driver_path)

driver.get("https://www.ifreesite.com/population/")

time.sleep(3)

for result0 in driver.find_elements_by_xpath('//*[@class ="if_table starj taggllj"]'):
    print(result0.text)
for result1 in driver.find_elements_by_xpath('//tr/td/div/span[@class ="stare"]'):
    print(result1.text)
for result2

необходимо получить информацию о сайте:

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

1 Ответ

1 голос
/ 11 марта 2020

Данные собраны внутри data_a и data_b. Дальнейшие манипуляции с данными я оставляю вам.

from selenium import webdriver
import os

browser = webdriver.Chrome(executable_path=os.path.abspath(os.getcwd()) + "/chromedriver")
link = 'https://www.ifreesite.com/population/'
browser.get(link)

table = browser.find_element_by_xpath('//*[@id="if_mainboxb"]/div[2]/div/table[1]/tbody/tr/td/table')
data_rows = table.find_elements_by_tag_name('tr')

data_a = []
data_b = []
for element in data_rows:

    # collect continent names
    continents = [name.text for name in element.find_elements_by_class_name('taggllj')]
    if len(continents) > 0:
        data_a.append(continents[0])
        data_b.append(continents[1])

    # collect population data
    population_data = element.text.splitlines()
    if len(population_data) == 4:
        data_a.append(population_data[0])
        data_b.append(population_data[2])

Вывод:

['非洲', 'Burundi | 11,178,921', 'Djibouti | 887,861', 'Ethiopia | 99,390,750', 'Madagascar | 24,235,390', 'Mauritius | 1,273,212', 'Mozambique | 27,977,863', .....]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...