example - scrapy python documentation
utilizar la función de análisis de scree para analizar una URL específica (2)
Se las arregló para resolverlo.
Básicamente, solo necesitaba pasar el cuerpo de respuesta, la url y la solicitud de scrapy para crear el objeto de respuesta.
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'')
Tengo un crawler scrapy que funciona bien. Ahora quiero usar su función ''analizar'' para analizar una url determinada. Si bien existe una utilidad de línea de comando para hacerlo para una sola url usando el comando:
scrapy parse <options> <url>
Pero quiero hacer esto dentro de mi código python (y no comenzar un nuevo proceso para cada url no es una opción)
Por lo que imagino, lo que necesito para esto es esencialmente una forma de crear Respuesta dada una url. Dado que la respuesta que toma el filtro no es lo mismo que HTTPResponse, no estoy seguro de cómo obtener esa respuesta con una url.
Encontré un método make_reqests_from_url que hace lo obvio, pero no estoy seguro de cómo obtener la respuesta de scrapy Request a scrapy, que puedo pasar a la función de análisis.
Un kludge rápido (con piezas de aquí y aquí ) en el caso, a diferencia de OP, el subprocess
es una opción.
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()