零基础scrapy项目结构简介 - python批量获取百度图片到本地
scrapy 批量获取百度图片到本地
本篇主要分享如何通过scrapy框架根据关键字获取到百度图片所展示的所有图片
scrapy创建一个新项目
1. 安装scrapy
配置合适的python环境,本篇主要用到Anaconda环境,Anaconda下载地址:
官方下载
清华镜像
安装scrapy:conda install scrapy 或者 pip3 install scrapy 或者 pip install scrapy,注意pip和pip3的区别
2. 创建scrapy新项目
配置好scrapy环境后,可用scrapy支持的命令创建一个scrapy项目:scrapy startproject baidu_crawler
此时在当前目录下会自动创建一个名为baidu_crawler的文件夹,下面是我的文件目录:
然后到baid_crawler目录下,创建一个爬虫服务:scrapy genspider image_spider image.baidu.com
可以看到spiders目录下创建了image_spider.py文件,且代码中已有初始的配置
其中 name是爬虫服务的名称,scrapy引擎主要通过服务名对爬虫服务进行控制,allowed_domains是本服务需要访问的域名,start_urls是爬虫服务将会进行抓取的网页链接(百度图片这个链接可以再修改,下面再讲)
3. scrapy项目结构
下面介绍下每个文件的功能:
![scrapy爬虫框架的主要项目结构](https://img-blog.csdnimg.cn/20200827134827659.png#pic_center)
文件名 | 主要功能 |
---|---|
scrapy.cfg | 整个项目的配置文件 |
settings.py | 爬虫服务的配置文件,主要可以调整并发度、管理中间件优先级、pipeline优先级 |
image_spider.py | 爬取任务的主要文件,发出请求和对响应结果进行解析等任务在此完成 |
items.py | 定义所需数据项,数据项主要用于组件之间的数据传递,例如从spider到pipeline之间的数据传递 |
pipelines.py | 对获取到的数据进行操作,例如存储到数据库、图片下载等操作都可以在此完成 |
middlewares.py | 项目中间件文件,主要可以用来配置用户代理、定义代理等等 |
批量获取百度图片
1.分析目标URL
在 image_spider.py中定义请求,上面提到start_urls是爬虫服务将会进行抓取的网页链接
如果直接使用http://image.baidu.com/,则返回的响应结果为HTML,并且因为百度图片是滑动动态刷新的,所以只通过发送该请求可能无法获取到所有的百度图片。
有多种方式可以获取到百度图片:
1.构造请求获取到HTML,解析HTML来获取图片,主要可用BeautifulSoup来解析HTML来获取图片信息
2.构造请求获取到JSON格式的响应结果,直接解析JSON来获得图片信息
下面是一种根据关键字获取百度图片的URL形式