Web scrapping

ABC DEF
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:2
0

Witam,

Kopiuj
from bs4 import BeautifulSoup
import json
import time
import requests
import datetime
import re
import sys

#ttps://api.sofascore.com/api/v1/unique-tournament/17/season/17359/events/round/1
url = "https://api.sofascore.com/api/v1/unique-tournament/17/season/17359/events/round/1"
headers = {
         'User-Agent': 'curl/7.64.0',
         'Referer': 'https://www.sofascore.com/pl/turniej/pilka-nozna/england/premier-league/17',
         }
page = requests.get(url, headers=headers)
                
dict_obj = json.loads(page.text)

print(dict_obj)

sys.exit()

Chciałbym pobrać sobie dane ze strony SofaScore.com. Po uruchomieniu tego skryptu dostałem bana na 24h. Co i jak muszę zmienić żeby to się nie powtórzyło jutro?

TR
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 lata
  • Postów:731
0

jak nie mają publicznego API, to nie dziwię się, że masz bana - webscraping jest niedozwolony ;)


musica curat corpus at animam
TR
tak kiedyś czytałem, widocznie mam stare informacje
MA
  • Rejestracja:prawie 17 lat
  • Ostatnio:10 dni
  • Postów:644
3
  1. Musisz wysyłać żądania dokładnie takie same jak wysyła przeglądarka, zdecydowanie więcej nagłówków itp.
  2. User agent curl to nie jest dobry pomysł na ukrywanie się przed banami.
  3. Używaj proxy, zmieniaj IP co kilka żądań.
  4. Poszukaj alternatyw (może https://www.api-football.com/).
dedicated
@Markuz ad. 3: Mógłbyś podać przykład takiego "proxy"?
MA
np. https://www.proxynova.com/proxy-server-list/ czyli po ustawieniu proxy na adres 116.196.85.150:3128 nasze żądanie będzie wykonane przez Chiny
ledi12
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 2 miesiące
  • Lokalizacja:Wrocław
1

Najlepszym sposobem bedzie puszczanie tego requestu przez jakies publiczne proxy. Potestuj np. co 5 requestow zmieniaj ip ;)


Robię http response status cody w martwych ciągach
michal377
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad 3 lata
  • Postów:10
1
trojanus napisał(a):

jak nie mają publicznego API, to nie dziwię się, że masz bana - webscraping jest niedozwolony ;)

Nic nie jest prawdą, wszystko jest dozwolone. Każda szanująca się strona posiada plik "robots.txt", który ustala reguły dla wszelkich botów, crawlerów oraz scrapperów (SEO tego używa też). Zapoznaj się z podstawami etyki w scrappingu, jest sporo artykułów na ten temat. Od czasu afery Cambridge Analytica sporo się pozmieniało, to fakt.

WeiXiao
Nic nie jest prawdą, wszystko jest dozwolone. wtf?
ABC DEF
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:2
0

Rzeczywiście jest takie coś na tej stronie i liczba disallow'ów nie napawa optymizmem:

https://www.sofascore.com/robots.txt

TS
To jest z przekierowania. Ten plik nie odnosi się do api.sofacore.com. Jak się właściwie dostałeś do tego API? Jest udostępnione publicznie czy gdzieś na lewo znalazłeś adres?
ABC DEF
Włączyłem development tools, zakładkę networks, kliknąłem sortowanie kolejkami i pojawił się JSON z danymi
ABC DEF
@tsz: Dotychczas sobie scrapowałem strony gdzie nie było problemu z żadnym banowaniem (jakieś wikipedie itp.). Skoro robots.txt nie odnosi się do api.sofascore.com to co dla mnie oznacza?
ledi12
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 2 miesiące
  • Lokalizacja:Wrocław
1

Zawsze mozesz sprobowac zrobic to selenium w trybie --headless. Przy odpowiedniej zabawie opoznieniami, czy symulacja clicku, nie powinienes dostac bana.


Robię http response status cody w martwych ciągach
ABC DEF
@ledi12: Poleciłbyś jakieś przejrzyste źródło informacji do nauki Selenium? Zmiana proxy i nagłówki nie działają
ledi12
@ABC DEF: youtube, dokumentacja

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.