平臺:debian8 + python3.6 + scrapy 1.3.2。
下面是一個簡單的scrapy腳本來下載我們所有的股票報價。
請在網頁上下載7z文件。爲什麼下載的文件號碼與我的日誌文件中的網址行數不相等?
要使用的7z解壓。
7z x urls.7z -o/home
可以測試示例數據/home/urls.csv。 爲了下面scrapy腳本保存爲/home/quote.py
import scrapy
import csv
CONCURRENT_REQUESTS = 3
CONCURRENT_REQUESTS_PER_SPIDER = 3
CLOSESPIDER_PAGECOUNT = 100000
CLOSESPIDER_TIMEOUT = 36000
DOWNLOAD_DELAY = 10
RETRY_ENABLED = False
COOKIES_ENABLED = False
RETRY_ENABLED = True
RETRY_TIMES = 1
COOKIES_ENABLED = False
downloaded = open('/home/downloaded.csv','w')
class TestSpider(scrapy.Spider):
def __init__(self, *args, **kw):
self.timeout = 10
name = "quote"
allowed_domains = ["chart.yahoo.com"]
csvfile = open('/home/urls.csv')
reader = csv.reader(csvfile)
rows = [row[0] for row in reader]
start_urls = rows
def parse(self, response):
content = response.body
target = response.url
filename = target.split("=")[1]
open('/home/data/'+filename+'.csv', 'wb').write(content)
downloaded.write(target+"\n")
的最後兩行/home/quote.py是很重要的,
開( '/家庭/數據/' +文件名+」 .csv','wb')。寫入(內容)打開文件並將數據保存到文件中。
下面,downloaded.write(target +「\ n」),它是寫一個日誌來描述哪個url被立即下載。
若要執行蜘蛛:
scrapy runspider /home/quote.py
在我看來,號碼 - 所有下載的文件是等於在/home/downloaded.csv排隊URL的數量。
ls /home/data |wc -l
6012
wc /home/downloaded.csv
6124
爲什麼這裏的兩個數字不相等?
請在你的plarform上測試並告訴我兩個數字。
請分享一些您的控制檯日誌,尤其是統計數據字典底: 你可以用類似檢查。你會看到Scrapy的下載器返回的不同HTTP狀態代碼的計數器。也許你的一些URL被重定向或者返回一個HTTP 404(並且它們不會被傳遞給你的'parse'回調函數) –