Maison développement back-end Tutoriel Python Une brève introduction au framework d'exploration (talonspider) en Python

Une brève introduction au framework d'exploration (talonspider) en Python

Jun 19, 2017 pm 03:24 PM
python 框架 爬虫

Cet article vous présente une brève introduction et la méthode d'utilisation du crawler frameworktalonspider développé à l'aide de python Les amis dans le besoin peuvent se référer à

. 1. Pourquoi écrire ceci ?

Pour certaines pages simples, il n'est pas nécessaire d'utiliser un framework relativement volumineux pour les explorer. Il serait gênant de les écrire à la main

J'ai donc écrit Talonspider pour cela. exigence :

•1. Extraction d'éléments à partir d'une seule page - cliquez ici pour une introduction détaillée
•2. Module Spider - cliquez ici pour une introduction détaillée

<.>2. Introduction && utilisation

2.1.item

Ce module peut être utilisé indépendamment Pour certains sites Web avec des requêtes relativement simples (comme uniquement obtenir des requêtes), vous pouvez rapidement. écrivez ce que vous voulez en utilisant ce module seul, par exemple (utilisez python3 ci-dessous, voir le répertoire d'exemples pour python2) :

2.1.1 Cible unique d'une seule page

Par exemple, pour obtenir. cette URL http://book.qidian.com/ Les informations sur le livre, la couverture et autres informations de info/1004608738 peuvent être écrites directement comme ceci :



import time
from talonspider import Item, TextField, AttrField
from pprint import pprint

class TestSpider(Item):
  title = TextField(css_select=&#39;.book-info>h1>em&#39;)
  author = TextField(css_select=&#39;a.writer&#39;)
  cover = AttrField(css_select=&#39;a#bookImg>img&#39;, attr=&#39;src&#39;)

  def tal_title(self, title):
    return title

  def tal_cover(self, cover):
    return &#39;http:&#39; + cover

if name == &#39;main&#39;:
  item_data = TestSpider.get_item(url=&#39;http://book.qidian.com/info/1004608738&#39;)
  pprint(item_data)
Copier après la connexion
Pour plus de détails, voir qidian_details_by_item.py

2.1. 1. Plusieurs objectifs sur une seule page

Par exemple, pour obtenir les 25 films affichés sur la page d'accueil de Douban 250 Movies, cette page a 25 objectifs Vous pouvez écrire directement comme ceci :



from talonspider import Item, TextField, AttrField
from pprint import pprint

# 定义继承自item的爬虫类
class DoubanSpider(Item):
  target_item = TextField(css_select=&#39;p.item&#39;)
  title = TextField(css_select=&#39;span.title&#39;)
  cover = AttrField(css_select=&#39;p.pic>a>img&#39;, attr=&#39;src&#39;)
  abstract = TextField(css_select=&#39;span.inq&#39;)

  def tal_title(self, title):
    if isinstance(title, str):
      return title
    else:
      return &#39;&#39;.join([i.text.strip().replace(&#39;\xa0&#39;, &#39;&#39;) for i in title])

if name == &#39;main&#39;:
  items_data = DoubanSpider.get_items(url=&#39;movie.douban.com/top250&#39;)
  result = []
  for item in items_data:
    result.append({
      &#39;title&#39;: item.title,
      &#39;cover&#39;: item.cover,
      &#39;abstract&#39;: item.abstract,
    })
  pprint(result)
Copier après la connexion
Pour plus de détails, voir douban_page_by_item.py

2.2.spider

Lorsque vous devez explorer des pages hiérarchiques, comme explorer tous les films Douban 250, la partie araignée est utile :



# !/usr/bin/env python
from talonspider import Spider, Item, TextField, AttrField, Request
from talonspider.utils import get_random_user_agent


# 定义继承自item的爬虫类
class DoubanItem(Item):
  target_item = TextField(css_select=&#39;p.item&#39;)
  title = TextField(css_select=&#39;span.title&#39;)
  cover = AttrField(css_select=&#39;p.pic>a>img&#39;, attr=&#39;src&#39;)
  abstract = TextField(css_select=&#39;span.inq&#39;)

  def tal_title(self, title):
    if isinstance(title, str):
      return title
    else:
      return &#39;&#39;.join([i.text.strip().replace(&#39;\xa0&#39;, &#39;&#39;) for i in title])


class DoubanSpider(Spider):
  # 定义起始url,必须
  start_urls = [&#39;https://movie.douban.com/top250&#39;]
  # requests配置
  request_config = {
    &#39;RETRIES&#39;: 3,
    &#39;DELAY&#39;: 0,
    &#39;TIMEOUT&#39;: 20
  }
  # 解析函数 必须有
  def parse(self, html):
    # 将html转化为etree
    etree = self.e_html(html)
    # 提取目标值生成新的url
    pages = [i.get(&#39;href&#39;) for i in etree.cssselect(&#39;.paginator>a&#39;)]
    pages.insert(0, &#39;?start=0&filter=&#39;)
    headers = {
      "User-Agent": get_random_user_agent()
    }
    for page in pages:
      url = self.start_urls[0] + page
      yield Request(url, request_config=self.request_config, headers=headers, callback=self.parse_item)

  def parse_item(self, html):
    items_data = DoubanItem.get_items(html=html)
    # result = []
    for item in items_data:
      # result.append({
      #   &#39;title&#39;: item.title,
      #   &#39;cover&#39;: item.cover,
      #   &#39;abstract&#39;: item.abstract,
      # })
      # 保存
      with open(&#39;douban250.txt&#39;, &#39;a+&#39;) as f:
        f.writelines(item.title + &#39;\n&#39;)


if name == &#39;main&#39;:
  DoubanSpider.start()
Copier après la connexion
Console :



/Users/howie/anaconda3/envs/work3/bin/python /Users/howie/Documents/programming/python/git/talonspider/examples/douban_page_by_spider.py
2017-06-07 23:17:30,346 - talonspider - INFO: talonspider started
2017-06-07 23:17:30,693 - talonspider_requests - INFO: GET a url: https://movie.douban.com/top250
2017-06-07 23:17:31,074 - talonspider_requests - INFO: GET a url: https://movie.douban.com/top250?start=25&filter=
2017-06-07 23:17:31,416 - talonspider_requests - INFO: GET a url: https://movie.douban.com/top250?start=50&filter=
2017-06-07 23:17:31,853 - talonspider_requests - INFO: GET a url: https://movie.douban.com/top250?start=75&filter=
2017-06-07 23:17:32,523 - talonspider_requests - INFO: GET a url: https://movie.douban.com/top250?start=100&filter=
2017-06-07 23:17:33,032 - talonspider_requests - INFO: GET a url: https://movie.douban.com/top250?start=125&filter=
2017-06-07 23:17:33,537 - talonspider_requests - INFO: GET a url: https://movie.douban.com/top250?start=150&filter=
2017-06-07 23:17:33,990 - talonspider_requests - INFO: GET a url: https://movie.douban.com/top250?start=175&filter=
2017-06-07 23:17:34,406 - talonspider_requests - INFO: GET a url: https://movie.douban.com/top250?start=200&filter=
2017-06-07 23:17:34,787 - talonspider_requests - INFO: GET a url: https://movie.douban.com/top250?start=225&filter=
2017-06-07 23:17:34,809 - talonspider - INFO: Time usage:0:00:04.462108

Process finished with exit code 0
Copier après la connexion
À ce moment, douban250.txt sera généré dans le répertoire actuel. Pour plus de détails, voir douban_page_by_spider.py.

3. Description

Il s'agit d'un travail d'étude Il y a encore de nombreux points à améliorer. Les commentaires sont les bienvenus.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en 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)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

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 ouvrir le format XML Comment ouvrir le format XML Apr 02, 2025 pm 09:00 PM

Utiliser la plupart des éditeurs de texte pour ouvrir des fichiers XML; Si vous avez besoin d'un affichage d'arbre plus intuitif, vous pouvez utiliser un éditeur XML, tel que Oxygen XML Editor ou XMLSPY; Si vous traitez les données XML dans un programme, vous devez utiliser un langage de programmation (tel que Python) et des bibliothèques XML (telles que XML.ETREE.ElementTree) pour analyser.

Existe-t-il un outil gratuit XML à PDF pour les téléphones mobiles? Existe-t-il un outil gratuit XML à PDF pour les téléphones mobiles? Apr 02, 2025 pm 09:12 PM

Il n'y a pas d'outil XML à PDF simple et direct sur mobile. Le processus de visualisation des données requis implique une compréhension et un rendu complexes des données, et la plupart des outils dits "gratuits" sur le marché ont une mauvaise expérience. Il est recommandé d'utiliser des outils côté informatique ou d'utiliser des services cloud, ou de développer vous-même des applications pour obtenir des effets de conversion plus fiables.

Y a-t-il une application mobile qui peut convertir XML en PDF? Y a-t-il une application mobile qui peut convertir XML en PDF? Apr 02, 2025 pm 08:54 PM

Une application qui convertit le XML directement en PDF ne peut être trouvée car ce sont deux formats fondamentalement différents. XML est utilisé pour stocker des données, tandis que PDF est utilisé pour afficher des documents. Pour terminer la transformation, vous pouvez utiliser des langages de programmation et des bibliothèques telles que Python et ReportLab pour analyser les données XML et générer des documents PDF.

La modification XML nécessite-t-elle une programmation? La modification XML nécessite-t-elle une programmation? Apr 02, 2025 pm 06:51 PM

La modification du contenu XML nécessite une programmation, car elle nécessite une recherche précise des nœuds cibles pour ajouter, supprimer, modifier et vérifier. Le langage de programmation dispose de bibliothèques correspondantes pour traiter XML et fournit des API pour effectuer des opérations sûres, efficaces et contrôlables comme les bases de données de fonctionnement.

Outil de mise en forme XML recommandé Outil de mise en forme XML recommandé Apr 02, 2025 pm 09:03 PM

Les outils de mise en forme XML peuvent taper le code en fonction des règles pour améliorer la lisibilité et la compréhension. Lors de la sélection d'un outil, faites attention aux capacités de personnalisation, en gérant des circonstances spéciales, des performances et de la facilité d'utilisation. Les types d'outils couramment utilisés incluent des outils en ligne, des plug-ins IDE et des outils de ligne de commande.

Comment embellir le format XML Comment embellir le format XML Apr 02, 2025 pm 09:57 PM

L'embellissement XML améliore essentiellement sa lisibilité, y compris l'indentation raisonnable, les pauses-lignes et l'organisation des étiquettes. Le principe est de traverser l'arbre XML, d'ajouter l'indentation en fonction du niveau et de gérer les balises et les balises vides contenant du texte. La bibliothèque XML.ETREE.ElementTree de Python fournit une fonction Pretty_xml () pratique qui peut implémenter le processus d'embellissement ci-dessus.

Comment convertir les fichiers XML en PDF sur votre téléphone? Comment convertir les fichiers XML en PDF sur votre téléphone? Apr 02, 2025 pm 10:12 PM

Il est impossible de terminer la conversion XML à PDF directement sur votre téléphone avec une seule application. Il est nécessaire d'utiliser les services cloud, qui peuvent être réalisés via deux étapes: 1. Convertir XML en PDF dans le cloud, 2. Accédez ou téléchargez le fichier PDF converti sur le téléphone mobile.

Comment convertir XML en PDF sur votre téléphone? Comment convertir XML en PDF sur votre téléphone? Apr 02, 2025 pm 10:18 PM

Il n'est pas facile de convertir XML en PDF directement sur votre téléphone, mais il peut être réalisé à l'aide des services cloud. Il est recommandé d'utiliser une application mobile légère pour télécharger des fichiers XML et recevoir des PDF générés, et de les convertir avec des API Cloud. Les API Cloud utilisent des services informatiques sans serveur et le choix de la bonne plate-forme est crucial. La complexité, la gestion des erreurs, la sécurité et les stratégies d'optimisation doivent être prises en compte lors de la gestion de l'analyse XML et de la génération de PDF. L'ensemble du processus nécessite que l'application frontale et l'API back-end fonctionnent ensemble, et il nécessite une certaine compréhension d'une variété de technologies.

See all articles