2012-10-14 61 views
1

我有一個scrapy爬蟲,它工作正常。 我現在想用它的'parse'函數來解析給定的url。 雖然存在一個命令行工具來使用命令針對單一網址這樣做:使用scrapy解析函數來解析一個特定的url

scrapy parse <options> <url>

但我想這樣做,我的Python代碼中(並沒有開始爲每一個URL的新進程不是選項)

從我想我需要什麼,這本質上是一種方式來創建響應給定的網址。 由於scrapy所採取的響應與HTTPResponse不同,我不確定如何獲得給定url的響應。

我確實找到了一個make_reqests_from_url方法,它顯而易見,但我不確定如何從scrapy請求到scrapy響應,我可以將它傳遞給解析函數。

回答

0

管理弄清楚。

本質上,我只需要傳遞響應正文,url和scrapy請求來創建響應對象。

bs = BaseSpider('some') 
head = 'www.mywebsite.com' 
httpcon = httplib.HTTPConnection(head) 
tail = '/mypage.html' 
httpcon.request('GET',tail) 
sreq = bs.make_requests_from_url(link) 
sresp = TextResponse(url=link,status=200,body=httpcon.getresponse(),encoding='utf-8') 
0

快速組裝機(由herehere件)的情況下,不像對於OP,subprocess是一種選擇。

import subprocess 
bashCommand = "Scrapy fetch http://www.testsite.com/testpage.html" 
process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
page, scrapy_meta_info = process.communicate()