python爬虫:使用scrapy框架抓取360超清壁纸(10W+超清壁纸等你来爬)

本文介绍了如何使用Python的Scrapy框架抓取360超清壁纸,包括分析网站结构、处理Ajax请求,以及存储数据到MongoDB或MySQL,并下载图片到本地。同时,提到了网站的反扒策略和解决方案。
摘要由CSDN通过智能技术生成

目的:闲着无聊,利用爬虫爬取360超清壁纸,并将其数据存储至MongoDB/MySQL中,将图片下载至指定文件夹。

要求:确保以安装MongoDB或者MySQL数据库、scrapy框架也肯定必须有的;使用python环境:python3.5;且使用的是Chrome浏览器。

1.网站抓取前期分析

首先,进行数据抓取网站的分析,这里将要抓取的网站为['http://image.so.com/'],进入首页,进入壁纸专区,美图太多别急着看……,打开chrome的开发者工具,开始进行分析。

结果可以看的出:该网站image.so.com使用的是经过Ajax技术处理,后期js渲染而后呈现出的网页,直接请求网站image.so.com后得不到任何有用的数据(见图1,图2);所以对于Ajax请求直接将开发者工具的过滤器切换到XHR选项(XHR得到的是Ajax信息)鼠标滚动几次,就会看到这里出现了很多Ajax请求信息。如下图所示:



图一   elements上可以看到很多原始数据信息


图二  Network的z?ch=wallpaper的response内与图一信息完全不一样,即网页经过js渲染


图三    XHR上的请求列表

可以看到图三有很多的请求详情,点开zj?ch=wallpaper&sn=30&listtype=new&temp=1,进入Preview,点击list并打开任意一个list(如list1),会发现里面有过很多参数信息,如id、index、url、group_title等。

其实上面所看到的都是JSON文件,每一个list字段(应该都是30个图片),里面包含的是网页上图片的所有信息,并且发现url的规律,当sn=30的时候返回的是0-30张图,当sn=60的时候返回的是30-60张图片。此外ch=什么就代表什么(此处ch=wallpaper),其他的不用管,可有可无。

下面开始用scrapy实现图片信息的mongo或者mysql存储,并且下载相应的图片信息。

2.创建images项目,并实现程序可执行,详情见代码:

item模块

from scrapy import Item,Field

class ImagesItem(Item):
    collecti
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值