В поисках DIV внутри DIV - BeautifulSoup - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь получить некоторую информацию о погоде с веб-сайта Метеорологии и получил следующий код, который дает ее для каждого города в Австралии, но как мне изменить это, чтобы включить только отдельный город?

from bs4 import BeautifulSoup
import requests
import sys

#try:
url = "http://www.bom.gov.au/"

page = requests.get(url,verify=False)
soup = BeautifulSoup(page.text, 'html.parser')
myz = soup.find("div",{"class" : "capitals"})
myz = myz.get_text(separator=" ")
print(myz)

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

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

from bs4 import BeautifulSoup
import requests

def getcapitalweather(soup,scapital):

    scap = soup.select_one('div.capital:contains({})'.format(scapital))
    capital=scap.find('h3').text
    tempnow=scap.find('p',class_='now').text.strip()
    wind=scap.find('p',class_='wind').text.strip()
    minmax=scap.find('p',class_='minmax').text.strip()
    preci=scap.find('p',class_='precis').text.strip()
    rain=scap.find('p',class_='rain').text.strip()
    return capital,tempnow,wind,minmax,preci,rain

url = "http://www.bom.gov.au/"
page = requests.get(url,verify=False)
soup = BeautifulSoup(page.text, 'html.parser')
print(getcapitalweather(soup,"Sydney"))
print(getcapitalweather(soup,"Melbourne")) 

Вывод :

   ('Sydney', 'Now23.1°', 'NE 9km/h', '22°\xa025°', 'Shower or two.', '0.2mm rain since 9am in Sydney.')
    ('Melbourne', 'Now16.5°', 'S 11km/h', '13°\xa027°', 'Partly cloudy. Late smoke haze.', '0.0mm rain since 9am in Melbourne.')
0 голосов
/ 05 февраля 2020

Это работает!

from bs4 import BeautifulSoup
import requests
import sys

url="http://www.bom.gov.au"
r = requests.get(url,verify=False)
soup = BeautifulSoup(r.content, 'html.parser')

for x in soup.findAll('div', {'class' : 'capital'}, limit=None):
    myval = x.get_text(separator=" ").strip()
    if not myval.find('Melbourne'):
        print(myval)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...