Wie finde ich den Kurstext „New York City, USA“ mit BeautifulSoup 在 Python?
Ich habe versucht, das Video zum Üben zu kopieren, aber es funktioniert nicht mehr.
Ich habe versucht, etwas in der offiziellen Dokumentation zu finden, aber ohne Erfolg. Oder funktioniert meine get_html_content-Funktion nicht richtig und Google blockiert mich einfach und gibt so ein leeres list / None zurück?
Das ist mein aktueller Code:
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'})
--> alle geben eine leere Liste zurück (= .find 方法返回 None)
Google 页面的布局可能同时发生了变化,因此要获取有关天气的数据,您必须更改代码。例如:
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('{:打印: