2015-12-02 18 views
0

Scrapy抓取時可以訪問數據嗎?我有一個腳本可以找到一個特定的關鍵字,並將關鍵字寫入.csv以及找到它的鏈接。但是,我必須等待scrapy才能完成抓取,並且在完成之後,它實際上會輸出.csv文件中的數據。Scrapy - 抓取並隨機更改用戶代理時訪問數據

我也試圖隨意更改我的用戶代理,但它不起作用。 如果我在一個問題中不允許有兩個問題,我會將其作爲一個單獨的問題發佈。

#!/usr/bin/env python 
 
# -*- coding: utf-8 -*- 
 
from scrapy.spiders import Spider 
 
from scrapy import log 
 
from FinalSpider.items import Page 
 
from FinalSpider.settings import USER_AGENT_LIST 
 
from FinalSpider.settings import DOWNLOADER_MIDDLEWARES 
 

 
import random 
 
import telnetlib 
 
import time 
 
    
 
    
 
class FinalSpider(Spider): 
 
    name = "FinalSpider" 
 
    allowed_domains = ['url.com'] 
 
    start_urls = ['url.com=%d' %(n) 
 
       for n in xrange(62L, 62L)] 
 

 

 
    def parse(self, response): 
 
     item = Page() 
 

 
     item['URL'] = response.url 
 
     item['Stake'] = ''.join(response.xpath('//div[@class="class"]//span[@class="class" or @class="class"]/text()').extract()) 
 
     if item['cur'] in [u'50,00', u'100,00']: 
 
      return item 
 

 
# 30% useragent change 
 
class RandomUserAgentMiddleware(object): 
 
    def process_request(self, request, spider): 
 
     if random.choice(xrange(1,100)) <= 30: 
 
      log.msg('Changing UserAgent') 
 
      ua = random.choice(USER_AGENT_LIST) 
 
      if ua: 
 
       request.headers.setdefault('User-Agent', ua) 
 
      log.msg('>>>> UserAgent changed')

+0

如果可能,你可以發佈代碼嗎?所以,理解 – WoodChopper

+0

@WoodChopper好了,那就好了。 – user5616520

回答

1

你不一定要輸出你收集到的項目(又稱「數據」)到一個CSV文件,您可以只運行與scrapy:

scrapy crawl myspider 

這將輸出日誌進入終端,但只存儲到csv文件的項目我假設你正在做這樣的事情:

scrapy crawl myspider -o items.csv 

現在,如果你想存儲日誌和項目,我建議你去把這個變成你的settings.py文件:

LOG_FILE = "logfile.log" 

現在你可以看到的東西,而蜘蛛運行只是檢查該文件。

對於與randomuseragent問題,請檢查如何激活scrapy middlewares

+0

這是我啓用日誌文件時得到的結果。 ScrapyDeprecationWarning:模塊'scrapy.log'已被棄用,Scrapy現在依賴scrapy導入日誌中的內建函數 – user5616520

+0

沒關係我得到了這個。 – user5616520