Trouvez liste de mots avec Scrapy

Bonjour

Je souhaite, à partir d’URLs de différents sites et d’une liste de mots savoir si les mots sont présents ou pas dans les urls pour en faire un dataset (savoir si une entreprise est ISO14001 ou autre info par exemple)

J’ai trouvé un morceau de script mais je peux passer qu’un seul mot et non une liste

Merci pour votre aide :wink:

import requests
from bs4 import BeautifulSoup
import pandas as pd

url_list = ['http://www.egis-acoustb.fr/',
'https://www.wurth-industrie.fr/']


#the_word = input()
the_word = 'ISO14001'

total_words = []
for url in url_list:
    r = requests.get(url, allow_redirects=False)
    soup = BeautifulSoup(r.content.lower(), 'html')
    words = soup.find_all(text=lambda text: text and the_word.lower() in text)  
    count = len(words)
    words_list = [ ele.strip() for ele in words ]
    for word in words:
        total_words.append(word.strip())

    print('\nUrl: {}\ncontains {} of word: {}'.format(url, count, the_word))
    print(words_list)


Hello, pour info tu utilises beautifulsoup, pas scrapy :wink:

Le mieux est sûrement d’apprendre un petit peu à utiliser python pour pouvoir comprendre ce qu’il se passe et l’éditer toi-même, notamment pour pouvoir automatiser l’entrée et la sortie (via fichiers texte/csv par exemple)

Salut, merci pour tes infos, je vais approfondir le sujet !

1 « J'aime »

Hello,

Tu veux dire est-ce que les mots sont présents sur la landing et non dans l’url ? Il est possible de lire le contenu de la landing en html avec une requête POST et de bricoler un code du genre :grin:

while word_list.length > i {
if (word_list[i] is in html {
keep_site = true
} else {
keep_site = false
}
i++;
}

Salut !

le but de l’exercice est de créer une liste d’URL et une liste de mots et de detecter si des mots sont présents dans les url listés.

Merci :wink:

Ok je comprends, c’est tout à fait faisable avec des outils d’automatisation en utilisant un check du type ‹ contient › :smiley:

Ce sujet a été automatiquement fermé après 365 jours. Aucune réponse n’est permise dorénavant.