9.5 Scrapy项目管道爬取58实战代码

<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粘贴进来

image

然后再写到文件里面

image

激活管道,在setting文件中

image
image

解封即把红框的注释去掉,注意改变管道的顺序补上改前边的文件名,而是改动后边的数字300


让其执行奔跑

手动创建main文件,并且把执行命令写进去,其中有个是文件名,然后debug运行即可。

image

image

课后作业:

  • 选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

补充资料

  • 有能力的同学可以去GitHub浏览Scrapy的源码,更深入地理解Scrapy的使用和操作方法
  • 有兴趣的同学可以尝试去爬取京东的商品,这里有一个京东爬虫开源的项目,大家可以参考一下

</article>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • scrapy学习笔记(有示例版) 我的博客 scrapy学习笔记1.使用scrapy1.1创建工程1.2创建爬虫模...
    陈思煜阅读 12,785评论 4 46
  • Python版本管理:pyenv和pyenv-virtualenvScrapy爬虫入门教程一 安装和基本使用Scr...
    inke阅读 15,547评论 6 12
  • 四仰八叉地仰在椅背上,一脚蹬着电脑桌,一脚蹬着衣柜门,因为腿有自我认知:总觉太长不得不死命地伸展。面前的瓜子壳堆成...
    野纵千舟阅读 259评论 0 0
  • 写于2016年12月的某一天 今天晚上躺在床上看巴菲特,回想今天的一天,还算开心,有些不顺,早上学车很顺利,感恩我...
    墙角一朵小花阅读 124评论 0 0
  • 前半段叙事节奏把握的很好,不疾不徐,慢慢的将两个主角交代清楚。 到了影片的中段,伍世豪救雷洛,闯进狼窟一般的地方,...
    泥购啦阅读 227评论 0 0