meta怎么用可以参考一下下面的链接~
https://www.zhihu.com/question/54773510昨天主要是怕取了一下网页里面的链接,再把各个链接里面的内容爬取下来。但是如果碰到一下情况,就需要用到这个meta啦
比如:一个标题A,上面有一个链接B,链接B里面有内容C,如果要把标题A和内容C一一对应的话,在scrapy里面用meta就比较容易实现啦。
下面举例。比如下面有一些内容,需要点进去查看里面的内容:
比如要把店铺名称和乘车路线搭配起来保存或者输出,就可以用到meta啦,具体操作如下(setting设置就不再讲咯,前面的内容都有提到过很多次了,记得开通管道哟):
① 爬虫文件内容:
import scrapy from yxq.items import YxqItem class File01Spider(scrapy.Spider): name = 'file01' start_urls = ['http://www.jkl.com.cn/cn/shopLis.aspx?id=862'] page = 2 def parse(self, response): item = YxqItem() name = response.xpath('//span[@class="con01"]/text()').extract()[0] urls = response.xpath('//div[@class="shopLis"]//a/@href').extract()[0] name = name.strip() urls = 'http://www.jkl.com.cn/cn/'+ urls item['name'] = name yield scrapy.Request(url=urls,callback=self.pg,meta={'item':item}) def pg(self,response): item = response.meta['item'] road = response.xpath('//div[@class="text"]/p[2]/text()').extract()[0] item['road'] = road yield item②items.py内容
import scrapy class YxqItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() name = scrapy.Field() road = scrapy.Field()③ pipelines.py文件
class YxqPipeline: def process_item(self, item, spider): name = item['name'] road = item['road'] print(name) print(road) return itempipelines里面我这里示例就直接打印了,如果只是需要输出打印的话,管道可以关闭也没事,直接在爬虫文件内打印即可~
效果如下: