2017-09-26 7 views
1

ウェブサイトからメールアドレスをダウンロードするサイトを削っています。 私はシンプルなScrapyクローラーを持っています。これはドメインを持つ.txtファイルを取り出し、電子メールアドレスを見つけるためにそれらをスクラップします。Scrapy - リンク内の予期しない接尾辞 "%0A"

残念ながら、Scrapyはリンクに接尾辞 "%0A"を追加しています。ログファイルに表示されます。

は、ここに私のコードです:

class EmailsearcherSpider(scrapy.Spider): 
    name = 'emailsearcher' 
    allowed_domains = [] 
    start_urls = [] 
    unique_data = set() 

    def __init__(self): 
     for line in open('/home/*****/domains', 
        'r').readlines(): 
      self.allowed_domains.append(line) 
      self.start_urls.append('http://{}'.format(line)) 


    def parse(self, response): 
     emails = response.xpath('//body').re('([a-zA-Z0-9_.+-][email protected][a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)') 
     for email in emails: 
      print(email) 
      print('\n') 
      if email and (email not in self.unique_data): 
       self.unique_data.add(email) 
       yield {'emails': email} 

domains.txt:ここ

link4.pl/kontakt 
danone.pl/Kontakt 
axadirect.pl/kontakt/dane-axa-direct.html 
andrzejtucholski.pl/kontakt 
premier.gov.pl/kontakt.html 

はコンソールからログです:

2017-09-26 22:27:02 [scrapy.core.engine] INFO: Spider opened 
2017-09-26 22:27:02 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 
2017-09-26 22:27:02 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6026 
2017-09-26 22:27:03 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (301) to <GET http://www.premier.gov.pl/kontakt.html> from <GET http://premier.gov.pl/kontakt.html> 
2017-09-26 22:27:03 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (301) to <GET https://andrzejtucholski.pl/kontakt> from <GET http://andrzejtucholski.pl/kontakt%0A> 
2017-09-26 22:27:05 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (301) to <GET https://axadirect.pl/kontakt/dane-axa-direct.html%0A> from <GET http://axadirect.pl/kontakt/dane-axa-direct.html%0A> 
2017-09-26 22:27:05 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (301) to <GET https://www.link4.pl/kontakt> from <GET http://link4.pl/kontakt%0A> 
2017-09-26 22:27:05 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (301) to <GET https://danone.pl/Kontakt%0a> from <GET http://danone.pl/Kontakt%0A> 
+0

'readlinesを()'を使用しないでください。ファイルはすでにイテレータであるため、ファイルから一度に1行を読み込むことができます。 – chepner

+0

@chepnerありがとう! – dzierzak

答えて

0

私は右の解決策を見つけました。私はrstrip機能を使用しなければならなかった。

self.start_urls.append('http://{}'.format(line.rstrip())) 
0

%0Aは改行文字です。行を読むと、改行文字は元のままです。それらを取り除くために、あなたはstring.strip機能を使用することができ、このように:

  self.start_urls.append('http://{}'.format(string.strip(line))) 
+0

私は.rstrip機能がここに優れている、ということが分かりました。とにかく、あなたの答えをありがとう! – dzierzak

関連する問題