利用scrapy爬虫时我们经常会遇到列表页可以爬取一些信息,详情页又可以爬到一些信息。同时详情页的url需要在列表页请求之后才可以获得。因此就需要垂直爬取,也就是先请求获得详情页的html,解析出详情页后再去请求以获得详情页的内容。同时,如果此时需要保存一些数据,如:列表页保存几个数据,详情页也需要保存几个数据,此时就需要设置多个item来获得。因此,本文记录了遇到垂直爬取与多个item保存并且下载某个item中内容的方法。
1 垂直爬取
垂直爬取其实比较简单,主要是就是利用yield Request()以及创建parse函数,Request去请求url将返回内容回调给parse_()函数,parse_()函数解析产生新的url及其他内容,若想进一步请求新的url,则继续去yield Request ,从而垂直爬取下去。
import scrapy
from scrapy import Request
from xiezhen.items import XiezhenItem
import time
import random
import re
from scrapy.http import request
import math
from xiezhen.items import ModelItem
class XzSpider(scrapy.Spider):
name = 'xz'
allowed_domains = ['tujigu.com']
def start_requests(self):
for i in range(1, 2):
if i == 1:
url = 'https://www.tujigu.com/riben/&#