2017-02-09 18 views
0

Вот что я пытаюсь сделать. Я хочу очистить электронные письма с нескольких веб-сайтов. У меня есть файл, в котором я могу ввести scrapy весь список url. Это, как я попытался извлечь электронную почту:Ошибка скрипирования на скребке

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 

Я выполнил команду, как:

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

И получил ошибку:

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 

Почему я получаю эту ошибку? Также как я могу сканировать полный веб-сайт и получать электронные письма оптимизированным образом с помощью моей программы? Я использую proxy rota tor для поддержки нескольких прокси. Если возможно, как я могу добавить определение user-agent в свой код?
Пожалуйста, помогите мне с этой проблемой.
Пожалуйста, позвольте мне сказать вам, что я не очищаю электронные письма для спама. Поскольку у меня есть много сайтов, я пытаюсь получить от него электронные письма.

+0

ли кто-нибудь может мне помочь с этим? –

ответ

0

В run spider команде необходимо использовать не имя файла, а Spider имя, которое устанавливается в качестве атрибута в классе:

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

Итак:

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

Пожалуйста, расскажите мне, в чем смысл этой ошибки. Я пытаюсь использовать, как вы указать: 'Использование ===== SCRAPY runspider [опции] runspider: Ошибка: Файл не найден: тест ' Можете ли вы прочитать мой вопрос и дайте мне знать ваше предложение. Я буду рад услышать :) –

+0

Похоже, что ваша установка для скрининга недействительна. Попробуйте перечислить всех пауков: 'scrapy list'. Также должен быть файл 'scrapy.cfg' с разделами' [settings] '- где искать параметры и' [deploy] '- где находятся все файлы. –

+0

Пауки должны находиться в папке '/spiders' относительно корня установки. –