1. Scrapy是什么?

2. 如何安装Scrapy?

2. 如何构建一个简单的spider?

3. 如何解析HTML?

4. 如何写入数据库?


关于Scrapy

    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。


安装Scrapy

    1. 需要安装Python2.7

    2. 安装pip

        下载get-pip.py 然后执行python get-pip.py

    3. 安装lxml

        pip install lxml

    4. 安装OpenSSL

        pip install pyopenssl

    5. 安装Scrapy

        pip install Scrapy

    6. 如果是在windows平台需要安装Python Windows扩展

        到这里http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/ 下载对应版本


Scrapy简单使用

    参考:http://doc.scrapy.org/en/0.24/intro/tutorial.html

    1. 创建一个Scrapy项目

        scrapy startproject tutorial

    2. 定义解析对象

    clipboard_thumb[2]

    3. 定义spider

    clipboard[1]_thumb[2]

    注意:

        1. 需要指定spider的name属性并且是唯一的,用来标识当前spider

        2. 定义爬虫的入口 start_urls 可以是一个或多个

        3. parse()方法是每个start_url的响应回调

    4. 启动spider

        scrapy crawl dmoz

 

数据解析

    数据解析可以使用正则或XPath,可以在parse方法中对response对象进行解析

    以搜狗微信为例:

    1. 获取微信文章列表

    clipboard[2]_thumb[1]

    clipboard[3]_thumb[1]

    这样就匹配了所有列表

    2. 从列表中解析每条微信的标题,链接,公众号,发布时间等属性

    clipboard[4]_thumb[1]

    获取标题

    clipboard[5]_thumb[2]

    clipboard[6]_thumb[2]

    从HTML结构来看,标题文字是包含在<h4><a>标题</h4>中,所以使用“h4/a”获取a标签

    因为其中包含<em>标签,这里做了去除操作,使用正则把标签都去掉了

    如何自动翻页?

    1. 找到下一页链接

clipboard[7]_thumb[8]

    2. 把链接解析出来

    clipboard[8]_thumb[8]

    3. 将"下一页"链接作为请求对象继续抓取

 

数据存储

    在Scrapy框架中,有pipeline模块专门做数据存储,只需简单定义即可

    1. 定义数据库链接对象

    clipboard[9]_thumb[2]

    指定数据库为NewsDB

    2. 写入数据

    clipboard[10]_thumb[2]


Scrapy调试

    使用srcapy shell "url"进行调试,前提是需要安装ipython

    例如:

        1. 准备链接进行调试http://weixin.sogou.com/weixin?type=2&ie=utf-8&query=%E4%B8%87%E5%9C%A3%E8%8A%82

        2. 启动shell

        clipboard[11]_thumb[4]

        3. 使用XPath解析列表

        clipboard[12]_thumb[4]

 

总结:

    1. Scrapy是一个异步的爬虫框架,只需做好数据解析就相当于完成了一个spider

    2. 在将抓取到的数据保存为文件时,默认会显示成unicode,需要借助工具转换为中文,但保存到数据库时不需要做处理

    3. 在parse()方法中可以设置休眠时间用来控制抓取频率

    4. 在setting.py中设置user-agent用来模拟浏览器