爬虫scrapy框架(4)——yield关键字

2019-05-29  本文已影响0人  猛犸象和剑齿虎
t013b9c86f5a43c0037.jpg

yield将方法转换成生成器。我们可以理解成一种特殊的return方法。

import scrapy
import re
from myspider.items import MyspiderItem
class MusicspiderSpider(scrapy.Spider):
    name = 'musicspider'#爬虫识别名称
    allowed_domains = ['htqyy.com']#爬虫能够爬取的网址范围
    start_urls = ['http://www.htqyy.com/top/musicList/hot?pageIndex=0&pageSize=20']#爬取的起始url

    def parse(self, response):
        # filename='music.html'
        data= response.body.decode()#获取响应内容
        # open(filename,'wb').write(data)#写入本地,请求的动作被框架完成
        items=[]# 存放音乐信息的列表
        titles = re.findall(r'target="play" title="(.*?)"',data)#获取所有歌曲名
        artists = re.findall(r'target="_blank">(.*?)</a>', data)#获取所有艺术家

        for i in range(0,len(titles)):
            item=MyspiderItem()
            item["title"]=titles[i]
            item["artist"] = artists[i]
            yield item

            # items.append(item)
        # return items

yield 入门

def f1():
    list=[]
    for i in range(10):
        list.append(i)
    return list
def f2():
    for i in range(10):
        yield i

print(f1())
gen=f2()
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))

结果:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0
1
2
3
4
5
上一篇下一篇

猜你喜欢

热点阅读