recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment récupérer un texte Google Weather spécifique à l'aide de BeautifulSoup ?

Comment trouver le texte du cours « New York City, USA » en utilisant BeautifulSoupPython ?

J'ai essayé de copier la vidéo pour m'entraîner, mais cela ne fonctionne plus.

J'ai essayé de trouver quelque chose dans la documentation officielle mais sans succès. Ou est-ce que ma fonction get_html_content ne fonctionne pas correctement et Google me bloque simplement, renvoyant ainsi un list / None vide ?

Voici mon code actuel :

from django.shortcuts import render
import requests

def get_html_content(city):
    USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36"
    LANGUAGE = "en-US,en;q=0.5"
    session = requests.Session()
    session.headers['User-Agent'] = USER_AGENT
    session.headers['Accept-Language'] = LANGUAGE
    session.headers['Content-Language'] = LANGUAGE
    city.replace(" ", "+")
    html_content = session.get(f"https://www.google.com/search?q=weather+in+{city}").text
    return html_content

def home(request):
    result = None
    if 'city' in request.GET: 
        city = request.GET.get('city')
        html_content = get_html_content(city)
        from bs4 import BeautifulSoup
        soup = BeautifulSoup(html_content, 'html.parser')
        soup.find_all('div', attrs={'class': 'wob_loc q8U8x'})
        **OR**
        soup.find_all('div', attrs={'id': 'wob_loc'})

--> renvoient tous une liste vide (= .find 方法返回 None)

P粉275883973P粉275883973230 Il y a quelques jours436

répondre à tous(1)je répondrai

  • P粉509383150

    P粉5093831502024-04-02 09:50:59

    La présentation de la page Google a peut-être changé en même temps, donc pour obtenir des données sur la météo, vous devez modifier votre code. Par exemple :

    import requests
    from bs4 import BeautifulSoup
    
    
    params = {'q':'weather in New York City, New York, USA', 'hl': 'en'}
    headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0'}
    cookies = {'CONSENT':"YES+cb.20220419-08-p0.cs+FX+111"}
    
    url = 'https://www.google.com/search'
    
    
    soup = BeautifulSoup(requests.get(url, params=params, headers=headers, cookies=cookies).content, 'html.parser')
    
    for t in soup.select('#wob_dp [aria-label]'):
        how = t.find_next('img')['alt']
        temp = t.find_next('span').get_text(strip=True)
        print('{:<5} {:<20} {}'.format(t.text, how, temp))
    

    Impression :

    Mon   Sunny                8
    Tue   Cloudy               7
    Wed   Partly cloudy        11
    Thu   Rain                 7
    Fri   Mostly cloudy        8
    Sat   Partly cloudy        6
    Sun   Scattered showers    8
    Mon   Showers              8
    

    répondre
    0
  • Annulerrépondre