Python爬虫系列-------Scrapy框架爬取校花网校花图片

本文介绍了一种使用正则表达式进行网页数据抓取的方法,通过Scrapy框架爬取校花网图片,并实现图片的保存。文章详细展示了爬虫配置、代码实现过程,包括设置爬取延迟、User-Agent伪装及图片URL的提取。

1.简述
上篇博客是 scrapy框架与 xpath抽取技术的结合
这次使用 正则抽取
目标:爬取校花网校花图片并保存在指定目录

2.配置
为防止触发反爬虫,依旧设置 爬取延迟 和 User-Agent 伪装浏览器
并规定不遵守目标网站的 robots 协议

3.上代码
因为没有使用 xpath ,所以 items 文件不写入内容
直接在爬虫文件 xiaohua.py 内写入

    # -*- coding=utf-8 -*-
    
    import re
    from scrapy.http  import Request
    import scrapy

    class XiaohuaSpider(scrapy.Spider):
             name='xiaohua'
             start_urls=['http://www.xiaohuar.com/list-1-0.html',]

             # 循环爬取10页
             def  start_requests(self):
                   reqs=[]
                   for i in range(10):
                        req=scrapy.Request('http://www.xiaohuar.com/list-1-%s.html' %(i))
                        reqs.append(req)

                   return reqs

             def parse(self, response):
                   if 'www.xiaohuar.com/list-1' in response.url:
                            html=response.text
                            
                            #获取目标图片 url
                            img_urls=re.findall(r'/d/file/\d+/\w+\.jpg',html)

                            #循环下载
                            for img_url in img_urls:
                                if  'http://' not in img_url:
                                
                                   #完整域名
                                   img_url='http://www.xiaohuar.com%s' %img_url

                                ##回调,生成 response 对象 并返回给 parse函数
                                yield   Request(img_url)
                    else:
                              #下载图片,获取图片地址完成后执行
                              url=response.url
                              #图片文件名
                              title=re.findall(r'(\w*.jpg)',url)[0]   
                              #保存在指定目录
                              with open('/root/Desktop/xiaohua/%s' %title,'wb') as f:
                                               f.write(response.body)

我们看 /root/ Desktop/ xiaohua 目录里内容
图片排放是无序的
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值