Python爬虫——scrapy_多网页下载

  1. 在DangSpider类中设置一个基础url
base_url = 'http://category.dangdang.com/pg'
page = 1
  1. 在parse方法中
# 每一页的爬取逻辑都是一样的,所以只需要执行每一页的请求再次调用parse方法就可以了
        if self.page < 100:
            self.page += 1
            url = self.base_url + str(self.page) + '-cp01.01.07.00.00.00.html'

            # 调用parse方法
            # scrapy.Request就是scrapy的get请求
            # url就是请求地址 callback就是要执行的那个函数  注意不要加()
            yield scrapy.Request(url=url, callback=self.parse)

完整的dang.py

import scrapy
from ..items import ScrapyDangdang39Item


class DangSpider(scrapy.Spider):
    name = "dang"
    allowed_domains = ["category.dangdang.com"]
    start_urls = ["http://category.dangdang.com/cp01.01.07.00.00.00.html"]

    base_url = 'http://category.dangdang.com/pg'
    page = 1

    def parse(self, response):
        # 所有的seletor的对象,都可以再次调用xpath方法
        li_list = response.xpath('//div[@id="search_nature_rg"]//li')

        for li in li_list:
            # 获取图片
            src = li.xpath('.//img/@data-original').extract_first()
            # 第一张图片和其他图片的标签的属性不一样
            # 第一张图片的src是可以使用的,其他图片的地址在data-original里
            if src:
                src = src
            else:
                src = li.xpath('.//img/@src').extract_first()
            # 获取名字
            name = li.xpath('.//img/@alt').extract_first()
            # 获取价格
            price = li.xpath('.//p[@class="price"]/span[1]/text()').extract_first()

            book = ScrapyDangdang39Item(src=src, name=name, price=price)

            # 获取一个book就将book传递给pipelines
            yield book


        # 每一页的爬取逻辑都是一样的,所以只需要执行每一页的请求再次调用parse方法就可以了
        if self.page < 100:
            self.page += 1
            url = self.base_url + str(self.page) + '-cp01.01.07.00.00.00.html'

            # 调用parse方法
            # scrapy.Request就是scrapy的get请求
            # url就是请求地址 callback就是要执行的那个函数  注意不要加()
            yield scrapy.Request(url=url, callback=self.parse)

你可能感兴趣的:(Python爬虫,python,爬虫,scrapy)