写个图片爬虫,scrapy,python第一次接触(停止更新)

时间:2021-12-04 20:50:47

1、安装python,装2.7就好了,因为scrapy里面要求的一些支撑包没有3.3版本的。有windows的安装包,无压力

2、安装scrapy,看官网的安装指导,装一大堆,都快想吐了

3、照着入门教程做一个简单的,顺便看看scrapy 的架构图,了解XPath选择器

这些都说的挺略,时间有点长,记不得细节,也没有多少难度

4、我的第一个抓爬目标是mmonly,静态的而且没有js,最终目标是爬新浪微博的图而且不用api,所以接触了image pipeline,里面有个地方特别坑


image pipeline错误: exceptions.KeyError: 'image_urls'    更新时间:2013.08.09

要将分析到的图片链接放到item里面的image_urls里面,这个东东分明是个list,我用append来加入,运行会有错误提示

别人的代码是item['image_urls'] = hxs.select('//*..******').extract(),这样的确可以,而且有了这个赋值之后,在用append加入字符串(url)就可以正确下载了


image pipeline 下载路径    更新时间:2013.08.11

我想将爬下来的图片一组组的分开文件夹放置,但是官网教程的只是在setting.py里面规定路径

打算在自己实现的那个pipeline里面修改一下文件名,下载完成后分类到新建的文件夹里面(这个工作我用C++在windows下写过类似的功能)

第一步,获取相关路径,先获得当前目录os.getcwd(),然后读取scrapy.cfg,在追踪settings.py,本来直接写进文件就好了,手贱

用到configparser,不过settings.py没有section,解析不了,自己解析了唯有,其实简单的字符串操作而已

第二步,利用os模块,从设置存储位置复制到自己的设计的目录。如果用硬要移动的话,shutil模块


XPath介绍使用

中文学习:www.w3school.com.cn/xpath

scrapy提供的教程:http://doc.scrapy.org/en/latest/topics/selectors.html

记得在命令行中用 scrapy shell <待分析网页url>,基于iPython,方便测试和一开始学习

可以用chrome的审查元素方便对着看,右键还可以copy xpath,不过跟scrapy实现的不是完全兼容

绝对路径的xpath会比模糊的要快,例如/html/body/div[3]/p会比//*[class="xxx"]/p要快


crawl抓取单个页面的图片,测试  

按照Scrapy Tutorial和Downloading Item Images的步骤,应该可以解析单个网页(还要会用Xpath),简单测试一下


spider的写法

spider主要负责分析和截获网页内容的功能,那么爬出来可能有两种url:

1、作为下一个要分析的网页url,分析出来就是存在item里面的,这个url应该交由parseItem函数去分析

2、这个url里面的数据不是存入item的,但是可以从这个url分析出更多的上一类的url,我交给parse函数去分析

start_urls默认就是交由parse处理的。所以Tutorial才强调spider至少有三个成员嘛

在做parse的函数里面产生request,Request(next_url, callback = self.parseItem),那么这个next_url就会交由parseItem去分析了


防·反爬虫

我第一次的作品就是爬图片,爬的对象是mmonly

一开始没有做avoid banning的工作,只能下载几张图片,其他所有的图片都下不了(我也怀疑是家里或者外部网络的原因)

打击了我一天多后,查反爬虫技巧,看scrapy的相关文档,我做了如下工作

1、禁用Cookies

2、设置User Agent。查看user agent:在chrome中,地址栏输入chrome://version/

今晚爬了一下煎蛋的妹子图,成功了哦。再次尝试这个mmonly的时候,竟然就可以了,下载飞快


scrapy image pipeline批量抓取图片爬虫 python源代码

连github小猫都下载不了,有需要参考的评论留邮箱吧。

这个第一次的小作品,没有涉及js的处理


下一步,将Item 的信息记录下来,暂时用csv等方式好了,迟些在加入数据库

简单避免重复下载,存储基本内容。

源码:http://pan.baidu.com/s/1kV1vc
不再更新喽,在准备考研。