[Megoldva] Google Pythonból

Sziasztok,

az alábbi szkript tökéletesen működött még a múlt héten, most meg semmi. Vajon a Google változtatott valamit, hogy nem akar  többé működni?

from bs4 import BeautifulSoup
import requests, logging

agent = 'Mozilla/5.0 (Windows NT 6.0; WOW64; rv:24.0) \
        Gecko/20100101 Firefox/24.0'
headers = {'User-Agent': agent}
base = "https://www.google.com/search?q="
logging.basicConfig(level=logging.DEBUG)


def get_lyrics(pattern):
    url = base + pattern
    req = requests.get(url, headers=headers, timeout=10)
    soup = BeautifulSoup(req.content, "html.parser")
    lyrics = soup.find_all("div", attrs={"jsname": "U8S5sf"})
    text = []
    for i in range(0, len(lyrics)):
        stripped = []
        stripped += lyrics[i].stripped_strings
        if "…" not in stripped:
            text += stripped
            text += " "
    return text

A lényeg az, hogy egy szerző - dal + lyrics stringre (pl: "nena - irgendwie irgendwo irgendwann lyrics") feldobta a dal szövegét. Tökéletesen működött kb 90%-os sikerrel találta meg a szöveget, még nagyon ismeretlen előadók esetében is.

Sajnos ennek egy hete vége, ha lefuttatom csak az alábbi, semmitmondó hibaüzenet jön:

DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): www.google.com
DEBUG:urllib3.connectionpool:https://www.google.com:443 "GET /search?q=nena%20%20irgendwie%20irgendwo%20irgendwann%20lyrics HTTP/1.1" 200 None

Van valakinek valamilyen ötlete mit változtathatott a gugli, hogy többé nem megy?

Hozzászólások

Szerkesztve: 2021. 02. 20., szo – 11:08

Szerintem a <div> tag jsname attribute valtozott a Google-nel:

lyrics = soup.find_all("div", attrs={"jsname": "U8S5sf"})

Meg kellene nezni kezzel, hogy most mi van a DOM-ban es aztan utana kell igazitani a kodot.

 

Update: Tul hamar reagaltam :) Kivancsisagbol en is lefuttattam es azt latom, hogy a kapott req.content nem egyezik a bongeszoben kapott eredmennyel.
Egyelore fogalmam sincs, hogy mi tortenik, de ha a peldadban mutatott korabbi kod mukodott, akkor gyanus, hogy bezartak azt a kaput es nem lehet egy sima HTTP GET-tel scrape-elni a keresesi eredmenyeket :(

Roses are red
Violets are blue
Unexpected '}' on line 32

Szerkesztve: 2021. 02. 20., szo – 11:36

Ird at a user agentet vmi modernebbre, ugy jo lesz.

Masold ki a bongeszodbol.