CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Aide web-scraping Python

bien23
bien23
Niveau 10
20 février 2021 à 16:36:42

yo les kheys j'essaye de capturer la date "19" dans une variable, depuis ce code html d'un site :


<span class="grayItalic">
    Received: 01/19/2021
</span>

cependant quand j'utilise BeautifulSoup, avec ce code :

date = soup.find('span', {'class': 'grayItalic'}).get_text()
converted_date = int(date[13:14])
print(date)
j'obtiens le message d'erreur :

'NoneType' object has no attribute 'get_text'
quelqu'un pour m'aider svp ?
A noter que ça marche quand je suis sur la page 1 du site, seulement que je passe sur la page 2 beautifulSoup ne trouve pas de class grayItalic :( (le site en question : https://iapps.courts.state.ny.us/nyscef/DocumentList?docketId=npvulMdOYzFDYIAomW_PLUS_elw==&display=all )

Azerban
Azerban
Niveau 16
20 février 2021 à 18:01:12

Ah j'ai compris, il faut passer le paramètre display=all dans l'url même pour scraper la deuxième page pour avoir les réponses sinon tu n'as pas les datas. Le script complet :

# https://www.jeuxvideo.com/forums/42-47-65726322-1-0-1-0-aide-web-scraping-python.htm
# scraping_court.py

from datetime import datetime

import requests
from bs4 import BeautifulSoup

# url = "https://iapps.courts.state.ny.us/nyscef/DocumentList?docketId=npvulMdOYzFDYIAomW_PLUS_elw==&display=all"  # Page 1
url = "https://iapps.courts.state.ny.us/nyscef/DocumentList?docketId=npvulMdOYzFDYIAomW_PLUS_elw==&display=all&PageNum=2&narrow="  # Page 2

headers = {
    "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:85.0) Gecko/20100101 Firefox/85.0",
    }

response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")

results = soup.find_all("span", class_="grayItalic")
print(len(results))

for result in results:
    date_str = result.text.strip()
    date = datetime.strptime(date_str, "Received: %m/%d/%Y")
    day = date.day
    print(day)
bien23
bien23
Niveau 10
20 février 2021 à 18:13:10

Le 20 février 2021 à 18:01:12 Azerban a écrit :
Ah j'ai compris, il faut passer le paramètre display=all dans l'url même pour scraper la deuxième page pour avoir les réponses sinon tu n'as pas les datas. Le script complet :

# https://www.jeuxvideo.com/forums/42-47-65726322-1-0-1-0-aide-web-scraping-python.htm
# scraping_court.py

from datetime import datetime

import requests
from bs4 import BeautifulSoup

# url = "https://iapps.courts.state.ny.us/nyscef/DocumentList?docketId=npvulMdOYzFDYIAomW_PLUS_elw==&display=all"  # Page 1
url = "https://iapps.courts.state.ny.us/nyscef/DocumentList?docketId=npvulMdOYzFDYIAomW_PLUS_elw==&display=all&PageNum=2&narrow="  # Page 2

headers = {
    "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:85.0) Gecko/20100101 Firefox/85.0",
    }

response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")

results = soup.find_all("span", class_="grayItalic")
print(len(results))

for result in results:
    date_str = result.text.strip()
    date = datetime.strptime(date_str, "Received: %m/%d/%Y")
    day = date.day
    print(day)

waow merci beaucoup, j'étais en train de galérer, j'essayais de faire en sorte de récupérer les cookies en passant d'abord par la première page pour ensuite passer à la deuxième page :rire: autant dire que pour un novice j'ai passé l'aprem là dessus :rire:
(il semble qu'on ne puisse pas accéder directement à la deuxième page sans passer par la première, quand on ouvre son navigateur)

Azerban
Azerban
Niveau 16
20 février 2021 à 18:14:23

Pour scraper les deux pages :

# https://www.jeuxvideo.com/forums/42-47-65726322-1-0-1-0-aide-web-scraping-python.htm
# scraping_court.py

from datetime import datetime
from typing import List

import requests
from bs4 import BeautifulSoup

HEADERS = {
    "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:85.0) Gecko/20100101 Firefox/85.0",
    }

def get_dates(url: str) -> List:
    response = requests.get(url, headers=HEADERS)
    soup = BeautifulSoup(response.text, "html.parser")

    results = soup.find_all("span", class_="grayItalic")
    print(f"Nombre de résultats dans la page {i}: {len(results)}")

    dates = []
    for result in results:
        date_str = result.text.strip()
        date = datetime.strptime(date_str, "Received: %m/%d/%Y")
        dates.append(date)
    return dates  # return list of datetime objects


if __name__ == "__main__":
    for i in range(1, 3):
        url = f"https://iapps.courts.state.ny.us/nyscef/DocumentList?docketId=npvulMdOYzFDYIAomW_PLUS_elw==&display=all&PageNum={str(i)}&narrow="
        dates = get_dates(url)
        for date in dates:
            print(f"Jour: {date.day}, mois: {date.month}, année: {date.year}")
        
bien23
bien23
Niveau 10
20 février 2021 à 18:15:24

wow merci beaucoup je vais éplucher tout ça, l'important c'est de comprendre :hap:

Azerban
Azerban
Niveau 16
20 février 2021 à 18:17:30

(il semble qu'on ne puisse pas accéder directement à la deuxième page sans passer par la première, quand on ouvre son navigateur)

C'est parfois le cas, dans ce cas tu peux passer le paramètre "referer" dans le headers de ta requête pour lui faire croire que tu viens de la page d'avant ou d'un autre site web.

bien23
bien23
Niveau 10
20 février 2021 à 18:21:41

Le 20 février 2021 à 18:17:30 Azerban a écrit :

(il semble qu'on ne puisse pas accéder directement à la deuxième page sans passer par la première, quand on ouvre son navigateur)

C'est parfois le cas, dans ce cas tu peux passer le paramètre "referer" dans le headers de ta requête pour lui faire croire que tu viens de la page d'avant ou d'un autre site web.

comme ça ?
headers = {"User-Agent":"blablabla", referer}

dsl mais je suis débutant :rire:

Azerban
Azerban
Niveau 16
20 février 2021 à 18:27:16

Non comme ça :

headers = {
    "User-Agent": "Chinese CIA great reset program",
    "Referer": "https://www.jeuxvideo.com",
}

requests.get("https://www.lemonde.fr", headers=headers)

Là je fais une requête GET sur le site web du monde et je lui fais croire que je viens de jeuxvideo.com.

Azerban
Azerban
Niveau 16
20 février 2021 à 18:28:52

https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Referer

bien23
bien23
Niveau 10
20 février 2021 à 18:33:24

Ah ok super c'est beaucoup plus simple comme ça :)

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment