Il ne semble pas dépasser la première page. Qu'est-ce qui ne va pas? De plus, si le mot que vous recherchez est dans le lien, il ne fournira pas la bonne octroi, il affichera 5 sorties avec 5 comme la présence
import requests from bs4 import BeautifulSoup for i in range (1,5): url = 'https://www.nairaland.com/search/ipob/0/0/0/{}'.format(i) the_word = 'is' r = requests.get(url, allow_redirects=False) soup = BeautifulSoup(r.content, 'lxml') words = soup.find(text=lambda text: text and the_word in text) print(words) count = len(words) print('\nUrl: {}\ncontains {} occurrences of word: {}'.format(url, count, the_word))
4 Réponses :
Si vous souhaitez dépasser les 6 premières pages, modifiez la plage de votre boucle:
for i in range (1,5): # this will start from the second page, since the second page is indexed at `1`
Puis changez la plage pour i in gamme (6): code>
Je veux obtenir les occurrences dans les 6 premières pages. Il affiche les occurrences pour la première page uniquement malgré la modification de la plage (6)
Il me donne le Résultat
Pour moi, cela fonctionne bien:
https://www.nairaland.com/search/ipob/0/0/0/0 url is somewhere in Europe sending semi nude video on the internet.Are you proud of such groups with such leader? Url: https://www.nairaland.com/search/ipob/0/0/0/0 contains 110 occurrences of word: is https://www.nairaland.com/search/ipob/0/0/0/1 url Notre is a French word; means 'Our"...and Dame means "Lady" So Notre Dame means Our Lady. Url: https://www.nairaland.com/search/ipob/0/0/0/1 contains 89 occurrences of word: is https://www.nairaland.com/search/ipob/0/0/0/2 url How does all this uselessness Help Foolish Url: https://www.nairaland.com/search/ipob/0/0/0/2 contains 43 occurrences of word: is https://www.nairaland.com/search/ipob/0/0/0/3 url Dumb fuckers everywhere. I thought I was finally going to meet someone that has juju and can show me. Instead I got a hopeless broke buffoon that loves boasting online. Nairaland I apologize on the behalf of this waste of space and time. He is not even worth half of the data I have spent writing this post. Url: https://www.nairaland.com/search/ipob/0/0/0/3 contains 308 occurrences of word: is https://www.nairaland.com/search/ipob/0/0/0/4 url People like FFK, Reno, Fayose etc have not been touched, it is an unknown prophet that hasn't said anything against the FG that you expect the FG to waste its time on. Url: https://www.nairaland.com/search/ipob/0/0/0/4 contains 168 occurrences of word: is https://www.nairaland.com/search/ipob/0/0/0/5 url children send them to prison Url: https://www.nairaland.com/search/ipob/0/0/0/5 contains 29 occurrences of word: is Process finished with exit code 0
J'ai compris le problème, si le mot que vous recherchez est dans le lien, il n'ayera pas d'afficher les résultats corrects. Certains bugs?
Je pense que c'est due au paramètre "texte =". Si vous souhaitez rechercher quelque chose aussi à l'intérieur du lien, vous devez trouver la balise "A", extraire le "href"
Avez-vous essayé de chercher le mot que vous voulez "brutalement" à travers Regex? Si vous utilisez des demandes-html, il est facile de disposer d'un objet de type HTML analysé. Ensuite, vous pouvez rechercher des occurrences avec regex.
Pour trouver un mot avec regex: importe re, all_result = re.findall (re.comple ("votre chaîne"), text_var). All_Result est une liste. Vous pouvez utiliser les éléments à l'intérieur et obtenir une taille avec len ()
Essayez:
Url: https://www.nairaland.com/search/afonja/0/0/0/0 contains 30 occurrences of word: afonja Url: https://www.nairaland.com/search/afonja/0/0/0/1 contains 31 occurrences of word: afonja Url: https://www.nairaland.com/search/afonja/0/0/0/2 contains 36 occurrences of word: afonja Url: https://www.nairaland.com/search/afonja/0/0/0/3 contains 30 occurrences of word: afonja Url: https://www.nairaland.com/search/afonja/0/0/0/4 contains 45 occurrences of word: afonja Url: https://www.nairaland.com/search/afonja/0/0/0/5 contains 50 occurrences of word: afonja
Si le mot AFONJA fait partie du lien de recherche, il affichera le bon mot sevensifs
Afin de comprendre votre problème, vous devriez clarifier: 1) Quelle URL que vous souhaitez gratter 2) quel mot vous voulez trouver à l'intérieur du texte de la page 3) Quel problème vous obtenez
Je veux gratter 5 pages de cette URL Nairaland.com/search?q=afonja&borard= 0 & Topicsonly = 2 pour le mot Afonja. Les occurrences / comptes d'Afonja ne sont pas corrects
Le nom du mot est-il pour compter la même chose que le mot dans l'URL?
Oui c'est dans l'URL.
En tant que de côté, le mot de recherche a son propre nom de classe afin que vous puissiez simplement compter celles-ci. Le ci-dessous revient correctement pour l'endroit introuvable à la page. Vous pouvez utiliser cette approche dans votre boucle.
import requests from bs4 import BeautifulSoup as bs for i in range(9): r = requests.get('https://www.nairaland.com/search/afonja/0/0/0/{}'.format(i)) soup = bs(r.content, 'lxml') occurrences = len(soup.select('.highlight')) print(occurrences)
Avec un code correctement indenté, il fait. Je vois 4 séries de résultats.
Changez votre
pour code> en boucle dans
pour i in gamme (5): code>
Vous devez juste prendre
à partir de BS4 Importer magnifsoup code> dans une nouvelle ligne et modifier la boucle pour la boucle
pour I dans la plage (6): code>.