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?
- 279 megtekintés
Hozzászólások
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
- A hozzászóláshoz be kell jelentkezni
Ird at a user agentet vmi modernebbre, ugy jo lesz.
Masold ki a bongeszodbol.
- A hozzászóláshoz be kell jelentkezni
Köszi, úgy néz ki, ha átírom működik.
Minden hulla a Mount Everesten valamikor egy nagyon motivált ember volt.
- A hozzászóláshoz be kell jelentkezni