Comment donner l'URL de scrapy pour l'analyse?
Je veux utiliser scrapy pour l'analyse des pages web. Est-il un moyen de passer l'URL de démarrage du terminal lui-même?
Il est donné dans le la documentation que soit le nom de l'araignée ou l'URL peut être donné, mais quand j'ai donné l'url, il renvoie une erreur:
//nom de mon spider est un exemple, mais je donne l'url à la place de mon spider nom(Il fonctionne très bien si je donne spider nom).
scrapy d'analyse example.com
ERREUR:
Fichier
"/usr/local/lib/python2.7/dist-packages/Scrapy-0.14.1-py2.7.egg/scrapy/spidermanager.py",
la ligne 43, de créer
soulever KeyError("Spider introuvable: %s" % spider_name) KeyError: 'Araignée non trouvé: example.com'
Comment puis-je faire scrapy à utiliser mon araignée sur l'url donnée dans le terminal??
- Est example.com ajouté à la allowed_domains de votre araignée?
- oui example.com est ajouté à allowed_domains. Ce que je veux vraiment, c'est donner start_url en ligne de commande. comment puis-je le faire?
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas vraiment sûr de la ligne de commande en option. Cependant, vous pouvez écrire votre araignée comme ça.
Et commencer comme:
scrapy crawl my_spider -a start_url="http://some_url"
self.start_urls = kwargs.pop('start_urls').split(',')
qui est run avant super().Une manière encore plus facile pour permettre à plusieurs url-les arguments que ce que Pierre avait suggéré est en leur donnant comme une chaîne de caractères avec l'url séparés par une virgule, comme ceci:
Dans l'araignée vous suffit alors de diviser la chaîne de caractères ',' et obtenir un tableau d'url:
Utilisation scrapy analyser commande. Vous pouvez analyser une url avec votre spider. l'url est passé de la commande.
http://doc.scrapy.org/en/latest/topics/commands.html#parse
C'est une extension de l'approche adoptée par Sjaak Trekhaak dans ce fil. L'approche, car jusqu'à présent ne fonctionne que si vous fournir exactement un url. Par exemple, si vous souhaitez fournir plus d'une url comme ceci, par exemple:
puis Scrapy (j'utilise la version stable actuelle 0.14.4) prendra fin avec l'exception suivante:
Cependant, vous pouvez contourner ce problème en choisissant une variable différente pour chaque url de démarrage, avec un argument qui contient le nombre de passé url. Quelque chose comme ceci:
Vous pouvez ensuite effectuer les opérations suivantes dans votre araignée:
C'est un peu moche hack, mais il fonctionne. Bien sûr, il est fastidieux d'écrire explicitement vers le bas tous les arguments de ligne de commande pour chaque url. Par conséquent, il est logique pour envelopper le
scrapy crawl
commande en Python sous-processus et de générer les arguments de ligne de commande dans une boucle ou quelque chose.Espère que cela aide. 🙂
scrapy crawl MySpider -a start_urls=http://example.com/ -o - -t json
Tout fonctionne bien. Au départ, j'ai mis des options -o et - et de même que Vous erreur.Sjaak Trekhaak a la bonne idée et ici est de savoir comment permettre à multiples:
Vous pouvez aussi essayer ceci:
Il va ouvrir une fenêtre dans le navigateur de l'URL demandée.