python多次返回

2024-09-28 01:32:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Scrapy来获取数据this site。我需要从parse调用getlink。当使用yield时,正常调用无法正常工作,我得到以下错误:

2015-11-16 10:12:34 [scrapy] ERROR: Spider must return Request, BaseItem, dict or None, got 'generator' in <GET https://www.coldwellbankerhomes.com/fl/miami-dad

e县/kvc-17 U 1、17_3、17_2、17_8/incl-22/>

parse返回getlink函数可以工作,但即使在返回之后我也需要执行一些代码。我很困惑,任何帮助都是值得的。在

^{pr2}$

Tags: returnparserequest错误siteerrorthisdict
1条回答
网友
1楼 · 发布于 2024-09-28 01:32:45

Spider must return Request, BaseItem, dict or None, got 'generator'

getlink()是一个生成器。您正试图从parse()生成器将其yield。在

相反,您可以/应该迭代getlink()调用的结果:

def parse(self, response):
    browser = webdriver.Firefox()
    browser.maximize_window()
    browser.get(response.url)
    time.sleep(5)

    while True:
        try:
            for request in self.getlink(response):
                yield request

            browser.find_element_by_class_name('search-results-load-more').find_element_by_tag_name('a').click()
            time.sleep(3)
        except:
            break

另外,我注意到你有self.getlink(response)和{}。后者不起作用,因为webdriver实例上没有xpath()方法-您可能是想从您的webdriver控制的浏览器加载的页面源中make a Scrapy ^{},例如:

^{pr2}$

您还应该注意Explicit Waits with Expected Conditions,而不是通过time.sleep()使用不可靠且缓慢的人工延迟。在

另外,我不确定您手动写入CSV而不是使用内置的Scrapy ItemsItem Exporters的原因。而且,您没有正确关闭文件,也没有使用with()上下文管理器。在

另外,尝试捕获更具体的异常和avoid having a bare try/expect block。在

相关问题 更多 >

    热门问题