Получение погоды для страны, место bs4 - PullRequest
1 голос
/ 09 марта 2019

Я пытаюсь использовать этот веб-сайт https://www.timeanddate.com/weather/, чтобы очистить данные о погоде с помощью BeautifulSoup4, открыв URL-адрес:

quote_page=r"https://www.timeanddate.com/weather/%s/%s/ext" %(country, place)

Я все еще новичок в методах очистки веб-страниц иBS4, я могу найти нужную мне информацию в источнике страницы (например, в этом поиске мы берем страну как Индию и город как Мумбаи), связанную как: https://www.timeanddate.com/weather/india/mumbai/ext

ЕслиВы видите источник страницы, нетрудно использовать CTRL+F и находите атрибуты информации, такие как «Влажность», «Точка росы» и текущее состояние погоды (если ясно, дождливо и т. д.), единственное единственноеТо, что мешает мне получить эти данные, - это мое знание BS4.

Можете ли вы проверить исходный код страницы и написать методы BS4, чтобы получить такую ​​информацию, как «По ощущениям:», «Видимость», «Точка росы», «Влажность», «Ветер» и «Прогноз»?

Примечание. Ранее я выполнял упражнение по очистке данных, где мне приходилось получать значение в HTML-теге, например <tag class="someclass">value</tag>, используя `

a=BeautifulSoup.find(tag, attrs={'class':'someclass'})
a=a.text.strip()`
.

1 Ответ

2 голосов
/ 09 марта 2019

Вы можете ознакомиться с селекторами css

 import requests
from bs4 import BeautifulSoup as bs
country = 'india'
place = 'mumbai'
headers = {'User-Agent' : 'Mozilla/5.0',
          'Host' : 'www.timeanddate.com'}
quote_page= 'https://www.timeanddate.com/weather/{0}/{1}'.format(country, place) 
res = requests.get(quote_page)
soup = bs(res.content, 'lxml')
firstItem = soup.select_one('#qlook p:nth-of-type(2)')
strings = [string for string in firstItem.stripped_strings]
feelsLike = strings[0]
print(feelsLike)
quickFacts = [item.text for item in soup.select('#qfacts p')]

for fact in quickFacts:
    print(fact)

Первый селектор #qlook p:nth-of-type(2) использует селектор id для указания родителя, а затем : nth-CSS псевдокласса * типа 1009 * для выбора второго элемента типа абзаца (тега p).

Этот селектор соответствует:

enter image description here

Я использую stripped_strings для выделения отдельных строк и доступа к необходимой информации по индексу.


Второй селектор #qfacts p использует идентификатор селектора для родителяэлемент, а затем комбинатор потомков с селектором типа p для указания дочерних элементов тега p.Эта комбинация соответствует следующему:

image

quickFacts представляют список этих совпадений.Вы можете получить доступ к элементам по индексу.

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