1

我有一个运行良好的爬虫。我现在想使用它的 'parse' 函数来解析给定的 url。虽然存在一个命令行实用程序可以使用命令对单个 url 执行此操作:

scrapy parse <options> <url>

但我想在我的 python 代码中执行此操作(并且不为每个 url 启动一个新进程不是一个选项)

据我所知,我需要的是一种在给定 url 的情况下创建响应的方法。由于 scrapy 的响应与 HTTPResponse 不同,我不确定如何在给定 url 的情况下获取该响应。

我确实找到了一个很明显的方法 make_reqests_from_url,但是我不确定如何从 scrapy Request 到 scrapy 响应,我可以将其传递给 parse 函数。

4

2 回答 2

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')
于 2012-10-14T13:18:26.887 回答
0

与 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()
于 2013-05-26T19:03:49.337 回答