scrapy想了解yield的和callback的用法。这个运行次序不明白。
泡白 2018-05-15 11:03:57 这是我scrapy中的spider:
import scrapy
from autopjt.items import AutopjtItem
from scrapy.http import Request
class AutospdSpider(scrapy.Spider):
name = 'autospd'
allowed_domains = ['dangdang.com']
start_urls = ['http://category.dangdang.com/pg1-cp01.10.13.00.00.00.html']
def parse(self, response):
item=AutopjtItem()
item['name']=response.xpath("//a[@name='itemlist-title']/@title").extract()
item['price']=response.xpath("//span[@class='search_now_price']/text()").extract()
item['link']=response.xpath("//a[@name='itemlist-title']/@href").extract()
item['comnum']=response.xpath("//a[@name='itemlist-review']/text()").extract()
#print("6")
yield item
for i in range(1,3):
url='http://category.dangdang.com/pg'+str(i)+'-cp01.10.13.00.00.00.html'
print("-------"+str(i))
yield Request(url,callback=self.parse)
print("+++++++"+str(i))
结果是:
C:\Users\Administrator\python-text\book_example\spider\autopjt>scrapy crawl autospd --nolog
-------1
+++++++1
-------2
+++++++2
-------1
+++++++1
-------2
+++++++2
-------1
+++++++1
-------2
+++++++2
为什么运行的结果是这样的?我不理解加了yield是如何运作的。然后可以说一下callback吗。是重新调用一次的一次吗?