<article class="editor-area">
spider文件:
yield函数 ,这个函数没有结束,还可以继续返回,这里千万不能return,return就结束了1条数据。
这才yield出去到管道,才管道开始了。
yield item是yield到管道,yield request是yield到调度器。
管道文件pipline.py文件
天生有一个管道,但是这个管道里面什么都没有。之前讲过管道有4个函数。
首先打开一个文件,print(打开文件了)关闭一个,print(关闭文件了),中间是管道
问题来了如何写入文件:
如何把一个个对象写入文件。涉及到序列化,即把对象变成一个文本。如何把dictionary写入到文本中呢?经典方案是import jaon,把它变成一个json的字符串,然后存起来就ok了。
即:序列号函数json.dumps(),item其实就是一个dictionaty,但是离真正还是差一点。
于是json.dumps(dic(item)让其变成真正的dic,并把其放入line变量中,即line=json.dumps(dic(item)。
这其中有个问题,容易写成一坨,就是你不断地这么写只是在尾部追加,没有换行符,
这时候我们要添加一个换行的机制,并把其format粘贴进来
然后再写到文件里面
激活管道,在setting文件中
解封即把红框的注释去掉,注意改变管道的顺序补上改前边的文件名,而是改动后边的数字300
让其执行奔跑
手动创建main文件,并且把执行命令写进去,其中有个是文件名,然后debug运行即可。
课后作业:
- 选4种选择器中的一种对其高级语法学习
- 学习和掌握正则表达式的用法
- 尝试使用高级语法解析一些页面
补充资料:
介绍了四种选择器,其中正则表达式是必须学习的,其它三种只需挑一种自己喜欢的进行学习并且精通就好。注意一定要通过实际的网站多加练习如何提取到自己想要的数据
- CSS、Xpath和正则表达式:可以前往选择器(Selectors),学习更加全面的选择器用法
- 正则表达式:正则表达式是程序猿的必备技能,不仅在scrapy中可以用到,清洗数据、SQL数据库提取数据等都可以用到,所以一定要多加学习:正则表达式
- 谷歌浏览器具有一款拓展插件叫“XPath Helper”,可以在浏览器页面直接写Xpath query,即时显示所写的Xpath选择到的结果,非常好用,可以自行下载
XPath Helper下载:https://pan.baidu.com/s/1c2vYUOw
提取码 mtut
下载好,打开chrome://extensions/
然后把插件拖进去,重启下浏览器就可以用了,快捷打开插件方式shift+ctrl+X
补充资料
</article>