使用Scrapy爬虫框架简单爬取图片并保存本地(妹子图)
初学Scrapy,实现爬取网络图片并保存本地功能
一、先看最终效果
保存在F:\pics文件夹下
二、安装scrapy
1、python的安装就不说了,我用的python2.7,执行命令pip install scrapy,或者使用easy_install 命令都可以
2、可能会报如下错误
*********************************************************** Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed? ***********************************************************
- 1
- 2
- 3
- 1
- 2
- 3
解决方法:安装libxml2
下载对应的Python的版本,安装即可,网址:
https://pypi.python.org/pypi/lxml/3.4.4
三、创建项目
1、执行命令
scrapy startproject xiaohuar
- 1
- 1
会自动创建xiaohuar的scrapy项目
2、项目结构(我用的是WingIDE)
文件说明:
• scrapy.cfg 项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)
• items.py 设置数据存储模板,用于结构化数据,如:Django的Model
• pipelines 数据处理行为,如:一般结构化的数据持久化
• settings.py 配置文件,如:递归的层数、并发数,延迟下载等
• spiders 爬虫目录,如:创建文件,编写爬虫规则
四、编写爬虫程序
1、在spiders文件夹下创建.py文件
代码中注释已经很详细了,就不解释了,关于解析html内容,使用的是xpath,之前使用Java的webmagic 爬虫框架也是使用的此种方式,所示还是比较熟悉,一些插叙语法参考步骤2
2、xpath查询语法
查询标签中带有某个class属性的标签://div[@class=’c1’]即子子孙孙中标签是div且class=‘c1’的标签
• 查询标签中带有某个class=‘c1’并且自定义属性name=‘alex’的标签://div[@class=’c1’][@name=’alex’]
• 查询某个标签的文本内容://div/span/text() 即查询子子孙孙中div下面的span标签中的文本内容
• 查询某个属性的值(例如查询a标签的href属性)://a/@href
3、运行
进入到xiaohuar目录,执行
scrapy crawl xiaohuar
可能会报以下错误,原因是少win32api的模块
解决方法:
选择对应的版本下载安装即可地址:
http://sourceforge.net/projects/pywin32/files/
4、关于scrapy shell终端
可以使用scrapy shell进行调试,例如执行
scrapy shell http://www.xiaohuar.com/list-1-1.html
就可以查看得到的数据
5、最后的说明
程序执行过程中可以设置爬取的深度,我这里没有设置,可能关掉cmd程序还在执行,可以结束python的进程,或者设置爬取深度
五、总结
最近学习在python,实现非常简单的一个爬虫当做练习,中间一些模块的缺少错误,在网上查询还是费了很多的时间,有的回答是没有解决的,总之自己实践之后才会更加深刻。
使用Scrapy爬虫框架简单爬取图片并保存本地(妹子图)的更多相关文章
- Python使用Scrapy爬虫框架全站爬取图片并保存本地(妹子图)
大家可以在Github上clone全部源码. Github:https://github.com/williamzxl/Scrapy_CrawlMeiziTu Scrapy官方文档:http://sc ...
- windows下使用python的scrapy爬虫框架,爬取个人博客文章内容信息
scrapy作为流行的python爬虫框架,简单易用,这里简单介绍如何使用该爬虫框架爬取个人博客信息.关于python的安装和scrapy的安装配置请读者自行查阅相关资料,或者也可以关注我后续的内容. ...
- Scrapy爬虫框架之爬取校花网图片
Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设 ...
- scrapy爬虫系列之三--爬取图片保存到本地
功能点:如何爬取图片,并保存到本地 爬取网站:斗鱼主播 完整代码:https://files.cnblogs.com/files/bookwed/Douyu.zip 主要代码: douyu.py im ...
- python scrapy爬虫框架概念介绍(个人理解总结为一张图)
python的scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架 python和scrapy的安装就不介绍了,资料很多 这里我个人总结一下,能更加快理解scrapy和快速上手一个简 ...
- Python多线程Threading爬取图片,保存本地,openpyxl批量插入图片到Excel表中
之前用过openpyxl库保存数据到Excel文件写入不了,换用xlsxwriter 批量插入图片到Excel表中 1 import os 2 import requests 3 import re ...
- Python之Scrapy爬虫框架安装及简单使用
题记:早已听闻python爬虫框架的大名.近些天学习了下其中的Scrapy爬虫框架,将自己理解的跟大家分享.有表述不当之处,望大神们斧正. 一.初窥Scrapy Scrapy是一个为了爬取网站数据,提 ...
- scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250
scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250 前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大 ...
- scrapy爬虫框架教程(二)-- 爬取豆瓣电影
前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大家讲解一个完整爬虫的流程. 工具和环境 语言:python 2 ...
随机推荐
- Linux文件结构及基本文件夹
虽然Linux系统有很多种类,但是对于文件系统分区这块,基本上各个版本的Linux系统都是一样的.Linux文件系统分区不像Windows那样将硬盘分为C.D.E.F盘这样,Linux的文件结构是单个 ...
- 不得不玩玩NHibernate
1.0=>前言 放着好好的EF不用,为什么要来玩NHibernate了?那是因为现在的工作内容就是维护一个比较老的项目,第一版是公司找外包做的,跟数据库打交道这块用的NHibernate,虽然都 ...
- linux上课
1. service --status-all 2. service sshd restart 3. service --status-all | grep ssh 4. chkconfig --l ...
- HBase配置项详解
hbase.tmp.dir:本地文件系统的临时目录,默认是java.io.tmpdir/hbase−java.io.tmpdir/hbase−{user.name}: hbase.rootdir:hb ...
- Android开发自学笔记(Android Studio1.3.1)—3.Android应用结构解析
一.R文件是什么? 如上图所示,我们可以通过findViewById方法通过传入R.id.show找到我们的TextView元素,findViewById方法也很好理解,从View中通过Id ...
- C#:异步编程和线程的使用(.NET 4.5 )
摘自:http://www.codeproject.com/Articles/996857/Asynchronous-programming-and-Threading-in-Csharp-N(葡萄城 ...
- Altera OpenCL用于计算机领域的13个经典案例(转)
英文出自:Streamcomputing 转自:http://www.csdn.net/article/2013-10-29/2817319-the-application-areas-opencl- ...
- [HDOJ5442]Favorite Donut(最大表示法)
嗯……就是最小表示法改一下…… 这题就是把S串当作两个判断同构的串,然后就搞出最大的表示了 然后在反向再做一次 O(n)求最大表示,O(n)判断正反谁大
- htop查看系统负载
htop 是 Linux 系统中的一个互动进程查看器,可以让用户进行交互式操作,可横向或纵向滚动浏览进程列表,支持鼠标操作.用户可以在安装 htop 来监控服务器的负载. 01.下载 https:// ...
- eclipse failed to load the jni jvm.dll
问题:打开Eclipse弹出,eclipse failed to load the jni jvm.dll,一般都是本机的JDK与Eclipse位数不等{32-64,64-32} 解决:看本机Java ...