Python爬虫 scrapy框架(二)全站数据爬取 五大核心组件 请求传参meta 爬取图片ImagesPipeline 反爬机制:图片懒加载

本文介绍了使用Python Scrapy框架进行全站数据爬取的方法,包括通过Spider生成url列表和手动发送请求。讨论了Scrapy的五大核心组件——Spider、引擎、管道、调度器和下载器的角色。详细讲解了如何利用meta参数进行请求传递,以及在深度爬取中的应用。还探讨了scrapy爬取图片的ImagesPipeline,包括其作用、反爬机制和使用流程,并给出了实际案例——爬取图片网站的高清图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

scrapy框架

基于Spider全站数据爬取

将网站中某板块下的全部的页码对应的页面数据进行爬取。

实现方式:

  1. 将所有页码的url添加到start_urls 列表(不推荐)
  2. 自行手动进行请求的发送(推荐)
	yield scrapy.Request(url=new_url, callback=self.parse)  #callback 用于数据解析

案例

爬取 www.521609.com/tuku/mxxz/index.html 下所有页码的图片名称

scrapy startproject xhyl
cd xhyl
scrapy genspider xhyla www.521609.com/tuku/mxxz/index.html

不同页码url对比:
http://www.521609.com/tuku/mxxz/index.html
http://www.521609.com/tuku/mxxz/index_2.html

settings.py 配置文件

BOT_NAME = 'xhyl'

SPIDER_MODULES = ['xhyl.spiders']
NEWSPIDER_MODULE = 'xhyl.spiders'


# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'

# Obey robots.txt rules
ROBOTSTXT_OBEY = False

LOG_LEVEL = 'ERROR'

爬虫文件:xhyla.py

import scrapy


class XhylaSpider(scrapy.Spider):
    name = 'xhyla'
    # allowed_domains = ['www.521609.com/tuku/mxxz/index_28.html']
    start_urls = ['http://www.521609.com/tuku/mxxz/index.html']
    url = 'http://www.521609.com/tuku/mxxz/index_%d.html'
    page_num = 2

    def parse(self, response):
        li_list = response.xpath('/html/body/div[4]/div[3]/ul/li')
        for li in li_list:
            img_name = li.xpath('./a/p/text()').extract_first()
            print(img_name)
        if self.page_num <= 28:
            new_url = format(self.url % self.page_num)
            self.page_num += 1
            # 手动发送请求 callback 用于数据解析
            yield scrapy.Request(u
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值