scrapy-spider

怎么摘菜?来看看

先巧立名目(创建工程)

scrapy-spider

工程目录

scrapy-spider

材料清单

scrapy-spider

我们就抓ip地址,端口,服务器地址,类型这四样

于是items这样写

scrapy-spider

是吧,只有名称不一样而已

摘菜策略

摘菜员

摘菜嘛,先来个摘菜员

scrapy-spider

有点骚的是,这个员工要你取名字(家丁嘛,华安啦9527都随意)

而且他只摘指定的菜市场的菜(http://www.xicidaili.com/)

不过名字就行了,菜市场三个字去掉就行了(http://),要不他听不懂的

scrapy-spider

看吧,自作聪明的加上了菜市场(http://),所以这点要注意

shell

跑腿的带回一大堆,怎么摘?叉怕死,爱克斯怕死,这个比较好用(xpath)

其他的什么正则,bs你也随意,这个没有啥强制要求

不摘自己随便弄点上去也可以,不过估计不是你想要的


直接摘的话难保正确,可以先到练习场练习一下

scrapy-spider

别问日志怎么这么多,你创建的时候nolog不就好了?

scrapy-spider

的确是python交互界面,response就是跑腿带回来的菜篮子了

可以看到,503,你可能要教他怎么去爬了

settings

scrapy-spider

一般网站呢,有一个robot.txt,会说你不能爬我

但是你又想爬,怎么办,别和他废话就行了,干嘛听他的

scrapy-spider

还有,出去的时候,叫跑腿带个头套

scrapy-spider

别藏着掖着,加上点掩饰

scrapy-spider

怎么找头我就不BB了

然后

scrapy-spider

scrapy-spider

这就通了,菜就来了

xpath

这个啊,记住几个就行了

scrapy-spider

观察网页

scrapy-spider

他们都在table[id=ip_list]里面,每一行的tr除了tr[class=subtitle]都是一个代理,代理里面td就是数据

比如ip,table里面的tr里面的td的第二个的文本

scrapy-spider

结果

scrapy-spider

所以,我们先取出一个代理,再细细分出端口等数据

scrapy-spider

执行一下

scrapy-spider

结果

scrapy-spider

这样其实就摘菜完成了

保存结果

当然了,这些都是代理,不能需要的时候查吧,你需要保存一下

pipeline的话暂时不说,但是有一个好东西,会自动给你保存

不过,大家都只认item,所以你要先填充一下item

导入items

scrapy-spider

你的工程就是一个包,所以导入的话是从工程名称开始的(你自定义的)

可能会报错,但是别担心,没错的,只是和一般的工程有区别

填充item

scrapy-spider首先,注意两点

1. item可以像字典一样写入和读取,但是这个真不是字典,必要的话可以dict(item)转成字典

2. yield和return:这就好比排队买包子,return买完了就砸摊子,yield买完了下一个继续,并不会造成方法的结束,但是能把值返回

为什么要填充?因为框架其他部分只认这个,填充了才能传达到其他部分

为什么要传达?文本还好说,人家下载中间件比你下载快多了,得用他的吧,填充去吧

文件存储

先创建一个单独的目录,这样数据,程序分开好整理

scrapy-spider

特殊开启执行

scrapy-spider

结果

scrapy-spider

excel打开

scrapy-spider

方便把,都不用自己写保存

-o 

-o 不仅可以支持csv,还有json还有.....

反正是自动的啦


ip测试

既然是代理ip,我们也可以写一个ip测试啊,不能用的就干脆丢掉,反正也用不了

scrapy-spider

关键的比如req都可以提取到外部,毕竟会大量用到,重复创建就不好了

测试ip

scrapy-spider

这样,代理ip都是能用的啦


摘菜也不轻松啊