scrapy-spider
怎么摘菜?来看看
先巧立名目(创建工程)
工程目录
材料清单
我们就抓ip地址,端口,服务器地址,类型这四样
于是items这样写
是吧,只有名称不一样而已
摘菜策略
摘菜员
摘菜嘛,先来个摘菜员
有点骚的是,这个员工要你取名字(家丁嘛,华安啦9527都随意)
而且他只摘指定的菜市场的菜(http://www.xicidaili.com/)
不过名字就行了,菜市场三个字去掉就行了(http://),要不他听不懂的
看吧,自作聪明的加上了菜市场(http://),所以这点要注意
shell
跑腿的带回一大堆,怎么摘?叉怕死,爱克斯怕死,这个比较好用(xpath)
其他的什么正则,bs你也随意,这个没有啥强制要求
不摘自己随便弄点上去也可以,不过估计不是你想要的
直接摘的话难保正确,可以先到练习场练习一下
别问日志怎么这么多,你创建的时候nolog不就好了?
的确是python交互界面,response就是跑腿带回来的菜篮子了
可以看到,503,你可能要教他怎么去爬了
settings
一般网站呢,有一个robot.txt,会说你不能爬我
但是你又想爬,怎么办,别和他废话就行了,干嘛听他的
还有,出去的时候,叫跑腿带个头套
别藏着掖着,加上点掩饰
怎么找头我就不BB了
然后
这就通了,菜就来了
xpath
这个啊,记住几个就行了
观察网页
他们都在table[id=ip_list]里面,每一行的tr除了tr[class=subtitle]都是一个代理,代理里面td就是数据
比如ip,table里面的tr里面的td的第二个的文本
结果
所以,我们先取出一个代理,再细细分出端口等数据
执行一下
结果
这样其实就摘菜完成了
保存结果
当然了,这些都是代理,不能需要的时候查吧,你需要保存一下
pipeline的话暂时不说,但是有一个好东西,会自动给你保存
不过,大家都只认item,所以你要先填充一下item
导入items
你的工程就是一个包,所以导入的话是从工程名称开始的(你自定义的)
可能会报错,但是别担心,没错的,只是和一般的工程有区别
填充item
首先,注意两点
1. item可以像字典一样写入和读取,但是这个真不是字典,必要的话可以dict(item)转成字典
2. yield和return:这就好比排队买包子,return买完了就砸摊子,yield买完了下一个继续,并不会造成方法的结束,但是能把值返回
为什么要填充?因为框架其他部分只认这个,填充了才能传达到其他部分
为什么要传达?文本还好说,人家下载中间件比你下载快多了,得用他的吧,填充去吧
文件存储
先创建一个单独的目录,这样数据,程序分开好整理
特殊开启执行
结果
excel打开
方便把,都不用自己写保存
-o
-o 不仅可以支持csv,还有json还有.....
反正是自动的啦
ip测试
既然是代理ip,我们也可以写一个ip测试啊,不能用的就干脆丢掉,反正也用不了
关键的比如req都可以提取到外部,毕竟会大量用到,重复创建就不好了
测试ip
这样,代理ip都是能用的啦
摘菜也不轻松啊