Maison développement back-end Tutoriel Python python3 pour créer un robot d'exploration de page amusant

python3 pour créer un robot d'exploration de page amusant

Feb 14, 2017 pm 01:37 PM

La plupart des tutoriels Python sur Internet sont la version 2.X. Par rapport à python3.X, python2.X a beaucoup changé. J'ai installé python3.X. . Exemple

0x01

Je n'avais rien à faire pendant la Fête du Printemps (comme je suis libre), alors j'ai écrit un programme simple pour lire quelques blagues et enregistrer le processus d'écriture du programme. La première fois que je suis entré en contact avec des robots, c'est lorsque j'ai vu un article comme celui-ci. C'était un article amusant sur l'exploration de photos de filles sur Omelette. Ce n'était pas très pratique. J'ai donc commencé à imiter les chats et les tigres et j'ai pris quelques photos.

La technologie inspire l'avenir. En tant que programmeur, comment pouvez-vous faire une telle chose ? Il est préférable de faire des blagues meilleures pour votre santé physique et mentale.

python3 pour créer un robot dexploration de page amusant

0x02

Avant de retrousser nos manches et de commencer, vulgarisons quelques connaissances théoriques.

Pour faire simple, nous devons dérouler le contenu à un endroit spécifique de la page Web. Comment le dérouler Nous devons d'abord analyser la page Web pour voir quel élément de contenu nous avons. besoin. Par exemple, ce que nous avons exploré cette fois, ce sont les blagues du site Web hilarant. Lorsque nous ouvrons la page des blagues du site Web hilarant, nous pouvons voir beaucoup de blagues. Notre objectif est d'obtenir ces contenus. Revenez vous calmer après l'avoir lu. Si vous continuez à rire comme ça, nous ne pouvons pas écrire de code. Dans Chrome, nous ouvrons Inspecter l'élément, puis développons les balises HTML niveau par niveau, ou cliquons sur la petite souris pour localiser l'élément dont nous avons besoin.

python3 pour créer un robot dexploration de page amusant

Enfin, nous pouvons constater que le contenu de

est la blague dont nous avons besoin. La même chose est vraie lorsque l'on regarde la deuxième blague. . Ainsi, nous pouvons trouver tous les

dans cette page Web, puis extraire le contenu à l'intérieur, et nous avons terminé.

0x03

D'accord, maintenant que nous connaissons notre objectif, nous pouvons retrousser nos manches et commencer. J'utilise python3 ici. Concernant le choix de python2 et python3, chacun peut décider par lui-même. Les deux fonctions peuvent être implémentées, mais il existe de légères différences. Mais il est toujours recommandé d'utiliser python3.
Nous voulons extraire le contenu dont nous avons besoin. Nous devons d'abord extraire cette page Web. Comment la extraire ? Ici, nous devons utiliser une bibliothèque appelée urllib. page Web entière.
Tout d'abord, nous importons urllib


Copier le code Le code est le suivant :

importer urllib.request comme requête

Ensuite, nous pouvons utiliser la requête pour obtenir la page Web,


Copiez le code Le code est le suivant :

def getHTML(url ):
return request.urlopen(url).read()

La vie est courte, j'utilise python, une ligne de code, je télécharge des pages Web, tu as dit, là ce n'est pas une raison pour ne pas utiliser python.
Après avoir téléchargé la page Web, nous devons analyser la page Web pour obtenir les éléments dont nous avons besoin. Afin d'analyser les éléments, nous devons utiliser un autre outil appelé Beautiful Soup. En l'utilisant, nous pouvons analyser rapidement le HTML et le XML et obtenir les éléments dont nous avons besoin.


Copier le code Le code est le suivant :

soup = BeautifulSoup(getHTML("http://www.pengfu. com/xiaohua_1 .html"))

Utiliser BeautifulSoup pour analyser des pages Web n'est qu'une phrase, mais lorsque vous exécutez le code, un avertissement apparaîtra, vous invitant à spécifier un analyseur. Sinon, cela risque de ne pas fonctionner sur d'autres plateformes ou Une erreur est signalée sur le système.


Copier le code Le code est le suivant :

/Library/Frameworks/Python.framework/Versions/3.5/lib/ python3.5 /site-packages/bs4/__init__.py:181 : UserWarning : aucun analyseur n'a été explicitement spécifié, j'utilise donc le meilleur analyseur HTML disponible pour ce système ("lxml"). , mais si vous exécutez ce code sur un autre système, ou dans un environnement virtuel différent, il peut utiliser un analyseur différent et se comporter différemment.

Le code qui a provoqué cet avertissement se trouve à la ligne 64 du fichier joke.py . Pour vous débarrasser de cet avertissement, remplacez le code qui ressemble à ceci :

BeautifulSoup([votre balisage])

par ceci :

BeautifulSoup([votre balisage], "lxml" )

markup_type=markup_type))

Les types d'analyseurs et les différences entre les différents analyseurs sont expliqués en détail dans les documents officiels. À l'heure actuelle, il est plus fiable d'utiliser l'analyse lxml. .
Après modification


Copiez le code Le code est le suivant :

soup = BeautifulSoup(getHTML("http: //www.pengfu.com/xiaohua_1.html", 'lxml'))

De cette façon, il n'y aura aucun avertissement ci-dessus.


Copier le code Le code est le suivant :

p_array = soup.find_all('p', {'class' : "content- img clearfix pt10 relative"})

Utilisez la fonction find_all pour trouver toutes les balises p de class = content-img clearfix pt10 relative puis parcourez ce tableau


Copier le code Le code est le suivant :

pour x dans p_array : content = x.string

De cette façon, on obtient le contenu de la destination p. À ce stade, nous avons atteint notre objectif et atteint notre plaisanterie.
Mais lors de l'exploration de la même manière, une telle erreur sera signalée


Copiez le code Le code est le suivant :

raise RemoteDisconnected("Connexion fermée à distance sans" http.client.RemoteDisconnected : Connexion fermée à distance sans réponse

Il indique que l'extrémité distante ne répond pas, a fermé le lien et a vérifié le réseau et il n'y a pas de problème. Quelle est la cause de cela ? Ma posture est-elle mauvaise ?
Il n'y a pas de réponse lorsque j'ouvre Charles pour capturer le paquet. Pourquoi le navigateur ne peut-il pas y accéder ? avec UA ? Après avoir regardé Charles, j'ai découvert que pour les requêtes initiées à l'aide de urllib, la valeur par défaut de UA est Python-urllib/3.5 et lors de l'accès à UA dans Chrome, il s'agit de User-Agent : Mozilla/5.0 (Macintosh ; Intel Mac OS X 10_12_3). ) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/56.0.2924.87 Safari/537.36, est-ce dû au fait que le serveur rejette le robot d'exploration python basé sur UA ? Essayons-le sous un déguisement et voyons si cela fonctionne


Copier le code Le code est le suivant :

def getHTML(url):
headers = {'User-Agent': 'User-Agent :Mozilla /5.0 (Macintosh; Intel Mac OS .urlopen(req).read()

De cette façon, python est déguisé en chrome pour obtenir la page Web de Qibai, et les données peuvent être obtenues en douceur.

À ce stade, python est utilisé pour explorer Qibaihe. Les blagues sur Pangbelly.com sont terminées. Il suffit d'analyser les pages Web correspondantes, de trouver les éléments qui nous intéressent et d'utiliser les puissantes fonctions de python. pour atteindre nos objectifs. Qu'il s'agisse de photos XXOO ou de blagues à connotation, on peut le faire en un clic, je ne parlerai plus, je vais chercher des photos de filles.

# -*- coding: utf-8 -*-
import sys
import urllib.request as request
from bs4 import BeautifulSoup

def getHTML(url):
  headers = {'User-Agent': 'User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
  req = request.Request(url, headers=headers)
  return request.urlopen(req).read()

def get_pengfu_results(url):
  soup = BeautifulSoup(getHTML(url), 'lxml')
  return soup.find_all('p', {'class':"content-img clearfix pt10 relative"})

def get_pengfu_joke():
  for x in range(1, 2):
    url = 'http://www.pengfu.com/xiaohua_%d.html' % x
    for x in get_pengfu_results(url):
      content = x.string
      try:
        string = content.lstrip()
        print(string + '\n\n')
      except:
        continue
  return

def get_qiubai_results(url):
  soup = BeautifulSoup(getHTML(url), 'lxml')
  contents = soup.find_all('p', {'class':'content'})
  restlus = []
  for x in contents:
    str = x.find(&#39;span&#39;).getText(&#39;\n&#39;,&#39;<br/>&#39;)
    restlus.append(str)
  return restlus

def get_qiubai_joke():
  for x in range(1, 2):
    url = &#39;http://www.qiushibaike.com/8hr/page/%d/?s=4952526&#39; % x
    for x in get_qiubai_results(url):
      print(x + &#39;\n\n&#39;)
  return

if __name__ == &#39;__main__&#39;:
  get_pengfu_joke()
  get_qiubai_joke()
Copier après la connexion

Pour plus de production python3 de robots d'exploration de pages Web amusants et d'articles connexes, veuillez faire attention au site Web PHP chinois !

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Apr 01, 2025 pm 05:09 PM

Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

Comment copier efficacement la colonne entière d'une dataframe dans une autre dataframe avec différentes structures dans Python? Comment copier efficacement la colonne entière d'une dataframe dans une autre dataframe avec différentes structures dans Python? Apr 01, 2025 pm 11:15 PM

Lorsque vous utilisez la bibliothèque Pandas de Python, comment copier des colonnes entières entre deux frames de données avec différentes structures est un problème courant. Supposons que nous ayons deux dats ...

Quelles sont les bibliothèques Python populaires et leurs utilisations? Quelles sont les bibliothèques Python populaires et leurs utilisations? Mar 21, 2025 pm 06:46 PM

L'article traite des bibliothèques Python populaires comme Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask et Demandes, détaillant leurs utilisations dans le calcul scientifique, l'analyse des données, la visualisation, l'apprentissage automatique, le développement Web et H et H

Comment Uvicorn écoute-t-il en permanence les demandes HTTP sans servir_forever ()? Comment Uvicorn écoute-t-il en permanence les demandes HTTP sans servir_forever ()? Apr 01, 2025 pm 10:51 PM

Comment Uvicorn écoute-t-il en permanence les demandes HTTP? Uvicorn est un serveur Web léger basé sur ASGI. L'une de ses fonctions principales est d'écouter les demandes HTTP et de procéder ...

Comment créer dynamiquement un objet via une chaîne et appeler ses méthodes dans Python? Comment créer dynamiquement un objet via une chaîne et appeler ses méthodes dans Python? Apr 01, 2025 pm 11:18 PM

Dans Python, comment créer dynamiquement un objet via une chaîne et appeler ses méthodes? Il s'agit d'une exigence de programmation courante, surtout si elle doit être configurée ou exécutée ...

Comment enseigner les bases de la programmation novice en informatique dans le projet et les méthodes axées sur les problèmes dans les 10 heures? Comment enseigner les bases de la programmation novice en informatique dans le projet et les méthodes axées sur les problèmes dans les 10 heures? Apr 02, 2025 am 07:18 AM

Comment enseigner les bases de la programmation novice en informatique dans les 10 heures? Si vous n'avez que 10 heures pour enseigner à l'informatique novice des connaissances en programmation, que choisissez-vous d'enseigner ...

Que sont les expressions régulières? Que sont les expressions régulières? Mar 20, 2025 pm 06:25 PM

Les expressions régulières sont des outils puissants pour la correspondance des motifs et la manipulation du texte dans la programmation, améliorant l'efficacité du traitement de texte sur diverses applications.

See all articles