两周前开始准备做爬虫。
以前有了解,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
共同学习,写下你的评论
评论加载中...
作者其他优质文章