私はドメインのリストにScrapyを実行している、とページの多くは、このエラーを取得しています Couldn't bind: 24: Too many open files.
Scrapyエラー:バインドできませんでした:24:開いているファイルが多すぎます
私はこれを取得していませんでした私のLinuxマシン上でエラーが発生しましたが、今は私のMac上で取得しています。私はこれがSierra上で動作するかどうか、あるいはおそらく私がScrapy設定を省いたかどうかはわかりません。私はulimit
をチェックして、unlimited
を返すので、私はと思っています。それです。
それは私のクモをどうする場合には、ここでそのです:
class JakeSpider(CrawlSpider):
name = 'jake'
allowed_domains = allowedDomains
start_urls = startUrls
rules = (
Rule(LinkExtractor(), callback='parse_page', follow=True),
)
def parse_page(self, response):
page = response.url
domain = urlparse(page).netloc
domain = domain.replace('www.','')
#print(domain, 'is domain and page is', page)
linksToGet = getHotelUrlsForDomain(domain)
#if(len(linksToGet) == 0):
# print('\n ... links to get was zero \n')
#print('linksToGet = ', linksToGet)
links = response.xpath('//a/@href').extract()
for link in links:
if link in linksToGet:
print('\n\n\n found one! ', link, 'is on', domain, ' and the page is', page,'\n\n\n')
with open('hotelBacklinks.csv', 'a') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writerow({'hotelURL':link, 'targetDomain': domain})
編集:ここではそれらのいずれかの完全なエラーラインがあるが。それは擦り傷を起こさせているわけではありませんが、このような行がたくさんあるので、そうでなければ多くのページを手に入れることはできません。エラー行: 2017-09-24 14:21:29 [scrapy.core.scraper] ERROR: Error downloading <GET https://alabamatheatre.com/>: Couldn't bind: 24: Too many open files.
ありがとうございました。
ここでエラーが発生しています。エラーの原因となるコードの行を含め、完全なエラートレースバックを含めるように質問を編集します。 –
また、csvファイルをすべてのリンクで閉じて再オープンするのではなく、関数の一番上で一度開く方がよいでしょう。 –
@ジョンゴードン、ありがとう、私はそれらのいずれかに追加しました。これはScrapyから記録されたエラーです。それは重大なエラーではありませんので、原因となっているコードの特定の行でトレースバックを取得していません。また、csvのチップのおかげで、私はそれを修正しました。 –