2017-02-09 16 views
0

Hier ist was ich versuche zu tun. Ich möchte E-Mails von einer Reihe von Websites scrappen. Ich habe eine Datei, mit der ich die Liste der URL eingeben kann. Dies ist, wie ich versuchte, E-Mail zu extrahieren:Scrapy Fehler beim Schaben

import scrapy 
import datetime 
import re 
from scrapy.spiders import CrawlSpider 
from techfinder.items import EmailItem 
from scrapy.selector import HtmlXPathSelector 


class DetectSpider(scrapy.Spider): 
    name = "test" 

    start_urls = ["http://example.com"]#[url.strip() for url in starturlfile.readlines()] 


    def parse(self, response): 

     DOWNLOADER_MIDDLEWARES = 
     { 
      'scrapy_proxy_rotator.ProxyMiddleware': 1, 
     } 

     PROXY_ROTATOR = 
     { 
      'username': 'user1', 
      'password': 'pass1', 
      'proxies_file': 'proxies.txt', 
     } 
     emails = re.findall(r'[\w\.-][email protected][\w\.-]+', response.body)   
     emailitems = [] 
     for email in zip(emails): 
      emailitem = EmailItem() 
      emailitem["email"] = emails 
      emailitem["source"] = response.url 

     return emailitems 

lief ich den Befehl wie:

scrapy runspider scrapyDemo.py -o t.json -t json 

Und bekam den Fehler:

2017-02-09 12:58:34 [scrapy.utils.log] INFO: Scrapy 1.3.0 started (bot: scrapybot) 
2017-02-09 12:58:34 [scrapy.utils.log] INFO: Overridden settings: {'FEED_FORMAT': 'json', 'FEED_URI': 't.json'} 
Usage 
===== 
    scrapy runspider [options] <spider_file> 

runspider: error: Unable to load 'scrapyDemo.py': No module named techfinder.items 

Warum ich diese Störung erhalten? Wie kann ich die komplette Website durchsuchen und die E-Mails mit meinem Programm optimieren? Ich benutze Proxy-Rotator für mehrere Proxy-Unterstützung. Wenn möglich, wie kann ich User-Agent-Definition in meinem Code hinzufügen?
Bitte helfen Sie mir bei diesem Problem.
Bitte lassen Sie mich Ihnen sagen, ich kratze keine E-Mails für Spam. Wie ich viele von der Website habe, versuche ich die E-Mails von ihr zu erhalten.

+0

Gibt es jemanden, der mir helfen kann damit? –

Antwort

0

In run spider Befehl benötigen Sie keinen Dateinamen verwenden, sondern ein Spider Name, der als Attribut in der Klasse festgelegt ist:

class DetectSpider(scrapy.Spider): 
    name = "test" 
    .... 

So:

$ scrapy runspider test -o t.json -t json 
+0

Bitte können Sie mir sagen, was die Bedeutung dieses Fehlers ist. Ich versuche, die Art und Weise zu verwenden, geben Sie an: 'Verwendung ===== scrapy runspider [Optionen] runspider: Fehler: Datei nicht gefunden: Test ' Können Sie bitte meine Frage lesen und lassen Sie mich Ihren Vorschlag kennen. Ich werde mich freuen zu hören :) –

+0

Sieht aus wie Ihre scrapy Installation ungültig ist. Versuche alle Spinnen aufzulisten: 'scrapy list'. Außerdem sollte die Datei 'scrapy.cfg' mit den Abschnitten' [Einstellungen] '- wo nach Einstellungen gesucht werden soll und' [deploy] '- wo sich alle Dateien befinden. –

+0

Die Spider sollten sich im '/spiders'-Ordner relativ zum Installationsstammverzeichnis befinden. –

Verwandte Themen