def parse(self, response):
hxs = HtmlXPathSelector(response)
urls = hxs.select('//a[contains(@href, "content")]/@href').extract() ## only grab url with content in url name
for i in urls:
yield Request(urlparse.urljoin(response.url, i[1:]),callback=self.parse_url)
def parse_url(self, response):
hxs = HtmlXPathSelector(response)
item = ZipgrabberItem()
item['zip'] = hxs.select("//div[contains(@class,'odd')]/text()").extract() ## this bitch grabs it
return item
我不是百分之百的理解你的问题,但是下面的代码使用basespider从一个起始url请求站点,然后扫描起始url中的ref's,然后循环每个链接调用parse\u url。parse_url中匹配的所有内容都将发送到项目管道。
来自谷歌集团的史蒂文·阿尔梅罗斯:
你说得对,你可以提出请求并返回一个项目列表,但这不是你想要的。您试图生成一个项目列表,而不是返回它们。而且由于已经将parse()用作生成函数,因此不能同时使用yield和return。但你可以有很多收益。
试试这个:
是的,您可以同时提交请求和项目。来自what I've seen:
相关问题 更多 >
编程相关推荐