美文网首页人生苦短,我用Python
9.5 Scrapy项目管道爬取58实战代码

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

作者: 怂恿的大脑 | 来源:发表于2018-02-02 21:58 被阅读7次

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

    相关文章

      网友评论

        本文标题:9.5 Scrapy项目管道爬取58实战代码

        本文链接:https://www.haomeiwen.com/subject/xjkyzxtx.html