Salut Everone Je veux J'ai 1089 éléments dans mon erreur : p> voici mon code Python: p> link: p> https://www.yelp.com/ BIZ / DAEHO-KALBIJJIM-and-BOOF-SOUP-SOUP-SAN-FRANCISCO-9? OSQ = Restaurants P> xlsx code> fichier p>
3 Réponses :
Je ne connais pas très bien le sélénium, je ne peux donc pas commenter sur cet aspect. p>
La première fois que vous ouvrez "Sans francisco.csv" Vous avez lu le contenu sans les assigner à une variable. P>
Quant à votre erreur, il est causé par le fait que votre gamme est basée sur la longueur du téléphone Pouvez-vous expliquer votre code un peu plus? Qu'essayez-vous de faire? P> code>, pas em> sur la longueur de wevsite_link code >. Si wevsite_link code> est plus court que téléphone code>, vous obtenez une erreur. En termes simples, vous trouvez moins de liens de site Web que de numéros de téléphone, mais votre code suppose que vous trouverez toujours la même quantité de chacun. P>
Quel code avez-vous besoin?
@Usmanshahzad Je voulais dire une explication de ce que vous voulez que votre code fasse. Quel est le contexte?
Je veux faire passer le téléphone et le site "
Question Vérification mise à jour!
S'il vous plaît vérifier la question mise à jour
Mais le site Web est plus long que le téléphone que vous pouvez voir dans l'image
@Usmanshahzad Je suis sûr que la longueur de l'URL vs la longueur du téléphone n'est pas le problème. Il s'agit du nombre d'URL que vous trouvez vs le nombre de numéros de téléphone que vous trouvez.
Désolé je pense que @furas résolvez mon problème
@Usmanshahzad Très bien, comprends-tu maintenant pourquoi tu as eu ce problème?
Oui! Je comprends
En un coup d'œil, je soupçonne que
phone = driver.find_elements_by_css_selector(".text--offscreen__373c0__1SeFX+ .text-align--left__373c0__2pnx_")
Cela ne devrait pas causer d'erreur cependant, non? Sa gamme est basée sur la longueur du téléphone code> code>, il ne sera donc pas indexé en dehors de celui-ci.
Il semble que certains articles n'ont aucun téléphone, il a donc trouvé moins de téléphones puis des sites Web.
Vous devriez préférer tout d'abord à trouver tout Utilisation ". Texte - OFFREEN__373C0__1SEFX +" Utilisez ultérieurement pour Code> -Loop à rechercher téléphone code> et site Web code> dans chaque article séparatelly. P> ESSAY / SAUF CODE> Vous pouvez reconnaître si l'élément n'a aucun téléphone et utilisez une chaîne vide en tant que numéro de téléphone p> for url in mylist:
driver.get(url)
all_items = driver.find_elements_by_css_selector(".text--offscreen__373c0__1SeFX+")
for item in all_items:
try:
wevsite_link = item.find_element_by_css_selector(".link-size--default__373c0__1skgq")
wevsite_link = wevsite_link.text
#except selenium.common.exceptions.NoSuchElementException:
except:
wevsite_link = ''
try:
phone = item.find_element_by_css_selector(".text-align--left__373c0__2pnx_")
phone = phone.text
#except selenium.common.exceptions.NoSuchElementException:
except:
phone = ''
with open("Sans Fransico.csv", 'a',encoding="utf-8") as s:
s.write(phone + "," + wevsite_link + "\n")
Une dernière chose que j'ai reçu cette erreur lors de l'exécution de votre code?
Message: Sélecteur non valide: Un sélecteur non valide ou illégal a été spécifié dans la ligne 20
Evidemment,
wevsite_link code> n'est pas aussi long que le téléphone code> est. Pouvez-vous expliquer pourquoi vous vous attendez à ce que ce soit la même longueur? Avez-vous envisagé ce que vous voulez arriver si ce n'est pas le cas?Vous devriez d'abord trouver tout
.text - offScreen__373c0__1sefx + Utilisez-le pour une boucle pour rechercher un téléphone et WebSide dans tous les.text - offScreen__373c0__1sefx + CODE> Pour créer une paire(téléphone, Webside) code>. Et parfois, vous pouvez obtenir(aucun, WebSide) code> si quelque partie.text - offScreen__373c0__1sefx + code> n'a pastéléphone code>Pouvez-vous s'il vous plaît répondre afin que je puisse mieux comprendre!
Vous affichez une image avec le site Web et le téléphone, mais certains éléments de la page peuvent ne pas avoir de téléphone - et vous pouvez avoir moins de téléphones que des sites Web.
@Karlknechtel l'a bien expliqué, c'est essentiellement ce que j'ai écrit dans ma réponse.
@Furas effectivement fait
@Karlknechtel donc ce que je dois faire?
Tout d'abord, vous devez penser aux données et à vos besoins i> jusqu'à ce que vous puissiez répondre aux questions que je vous ai posées. Je ne peux pas résoudre le problème pour vous parce que je ne sais pas ce que vous voulez arriver dans tous les cas.