继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

花两周时间用Python和Scrapy做个小爬虫

临摹微笑
关注TA
已关注
手记 331
粉丝 32
获赞 170

两周前开始准备做爬虫。
以前有了解,Python有一个优秀的爬虫框架叫Scrapy,但是自己不怎么会Python,只在2015年的时候稍微看过一下,于是打算从头开始学习,先学Python,再了解爬虫的基础知识,再学习Scrapy,最终做出一个厉害的爬虫。这个爬虫应当具有以下的功能:

  • 防止被ban

  • 有效的错误处理

  • 重复数据的处理

到昨天,两周过去了,实现了以下的内容:

  • 了解了Python的基础知识,包括基本语法,数据结构,函数相关,以及面向对象,简单的正则;

  • 了解了爬虫的基本原理,简单用了下urllib2库;

  • 使用Scrapy自己写了一个爬虫,爬去了一整个网站,2万多个页面的数据;

下面来看看学习的情况。

第一周:

学习了Python的基础知识。看的是廖雪峰的Python2.7教程,由于Scrapy对于Python3的支持不够好,所以选择学习Python2.7,这个教程写得简单明了,对于有其他语言经验的选手,可以说学起来毫不费力。

第二周:

  • 先在 一个叫静觅的博客看了几篇关于爬虫的文章,这个博客里面也有几篇文章是讲从0开始学爬虫的;

  • 之后在知乎看到一个人答案里面说,Scrapy其实性能挺好的,自己撸了一圈爬虫后,发现还不如直接用Scrapy来得好,于是我决定直接开始整Scrapy;

  • 首先我想到的是去看Scrapy的中文文档,但是后来发现官方的版本已经是1.1.1了,中文文档只有0.24.1,并且照着文档做的时候发现有些地方不太对,没法出应该出现的效果,让我非常沮丧。痛定思痛之后,我决定直接撸最新的英文文档,静下心来,多一点耐心,我发现居然看起来没有什么问题,照着Tutorial敲了一遍;

  • 我想把数据存入MySQL,但是文档里面没有,于是看了下别人写的一个实例;
    之后,花了很长时间去配置MySQL,最终也没能成功,在安装MySQL-python的时候一直报错,谷歌百度了N圈也没有办法解决,于是换了个思路决定用MongoDB,后来发现MongoDB的配置极其简单:

from pymongo import MongoClientclass MongoDBPipeline(object):
    def __init__(self):
        connection = MongoClient(\'localhost\',27017)
        db = connection.ws
        self.ws = db.ipws
    def process_item(self, item, spider):
        self.ws.insert(dict(item))
        return item

最后照着
一个实例里面Spider的逻辑写了一个爬虫,并且将数据存入到MongoDB,代码如下:
items代码

import scrapyclass ipwsItem(scrapy.Item):
    title = scrapy.Field()
    url = scrapy.Field()
    num = scrapy.Field()
    content = scrapy.Field()

Spider的代码

Paste_Image.png

Pipeline的代码就是上面贴过的。

接下来的两周里面,应该做的事情就是:

  • 抓取ajax生成的数据

  • 错误处理

  • 重复数据处理

  • 防止被ban

再之后,可能研究下分布式爬虫。

作者:唐晓阳
链接:https://www.jianshu.com/p/5921af106659


打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP