這是我的代碼Scrapy不回工作,併產生共同
def parse(self, response):
soup = BeautifulSoup(response.body)
hxs = HtmlXPathSelector(response)
sites = hxs.select('//div[@class="row"]')
items = []
for site in sites[:5]:
item = TestItem()
item['username'] = "test5"
request = Request("http://www.example.org/profile.php", callback = self.parseUserProfile)
request.meta['item'] = item
**yield item**
mylinks= soup.find_all("a", text="Next")
if mylinks:
nextlink = mylinks[0].get('href')
yield Request(urljoin(response.url, nextlink), callback=self.parse)
def parseUserProfile(self, response):
item = response.meta['item']
item['image_urls'] = "test3"
return item
現在我的上述作品,但與我沒有得到的item['image_urls'] = "test3"
它即將爲空現在
值如果使用return request
而不是yield item
然後得到錯誤cannot use return with generator
如果我刪除此行
yield Request(urljoin(response.url, nextlink), callback=self.parse)
然後我的代碼工作正常,我可以得到image_urls
但後來我canot按照鏈接
那麼,有沒有辦法讓我可以使用return request
和yield together
等等我得到的item_urls
如果你使用'yield'你讓你的函數發生器,這是你的錯誤是告訴你。 'parseUserProfile'中定義的'item'在哪裏?它是一個類變量。 – Blender
@Blender我忘了在這裏添加,我從meta迴應。所以我該怎麼做才能解決我的問題。我在我的問題中添加了 – user1858027
對於我的Scrapy應用程序,我一直只在回調函數中使用'yield'語句,並且一切正常。你有沒有嘗試在'parseUserProfile'中用'yield item'替換'return item'? – pemistahl