Как извлечь изображение sr c с сайта - PullRequest
2 голосов
/ 01 апреля 2020

Я попытался очистить строки таблицы с сайта , чтобы получить данные о распространении вируса короны.

Я хотел извлечь sr c для всех тегов, чтобы получить источник изображения флага вместе со всеми данными для каждой страны. Может ли кто-нибудь помочь?

import pandas as pd
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.add_argument('--headless')
driver = webdriver.Firefox(options=options)

driver = webdriver.Firefox(options=options)
driver.get("https://google.com/covid19-map/?hl=en")
df = pd.read_html(driver.page_source)[1]

df.to_csv("Data.csv", index=False)

driver.quit()

Ответы [ 2 ]

4 голосов
/ 01 апреля 2020

Хотя ответ Гарета уже принят, его ответ вдохновил меня на написание этой формы с точки зрения pandas. Поскольку мы знаем, что URL для флагов является фиксированным шаблоном, и единственное, что меняется, - это имя. Мы можем создать новый столбец, поместив имя в нижний регистр, заменив пробелы символами подчеркивания, а затем вплетая имя в шаблон фиксированного URL-адреса

import pandas as pd
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome()

driver.get("https://google.com/covid19-map/?hl=en")
df = pd.read_html(driver.page_source)[1]
df['flag_url'] = df.apply(lambda row: f"https://www.gstatic.com/onebox/sports/logos/flags/{row.Location.lower().replace(' ', '_')}_icon_square.svg", axis=1)
df.to_csv("Data.csv", index=False)
driver.quit()

SAMULE OUTPUT

Location,Confirmed,Cases per 1M people,Recovered,Deaths,flag_url
Worldwide,882068,125.18,185067,44136,https://www.gstatic.com/onebox/sports/logos/flags/worldwide_icon_square.svg
United Kingdom,29474,454.19,135,2352,https://www.gstatic.com/onebox/sports/logos/flags/united_kingdom_icon_square.svg
United States,189441,579.18,7082,4074,https://www.gstatic.com/onebox/sports/logos/flags/united_states_icon_square.svg
3 голосов
/ 01 апреля 2020

Не самый гениальный способ, но, поскольку у вас уже есть источник страницы, как насчет использования регулярных выражений для сопоставления URL-адресов изображений?

import re
print (re.findall(r'https://www.gstatic.com/onebox/sports/logos/flags/.+?.svg', driver.page_source))

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

Если это не то, что вы хотите, я могу удалить этот ответ.

Как упомянуто @ Крисом Дойлом в комментариях, это можно просто сделать, заметив, что URL-адреса совпадают с ". +?" заменяется на название страны (все строчные, связанные с подчеркиванием). У вас есть эта информация в файле csv.

country_name = "United Kingdom"
url = "https://www.gstatic.com/onebox/sports/logos/flags/"
url += '_'.join(country_name.lower().split())
url += '.svg'
print (url)

Также обязательно ознакомьтесь с его ответом, используя чисто панду:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...