Scrapy抓取微信demo

时间:2014-11-03 01:35:14   收藏:0   阅读:1195

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. 定义解析对象

    bubuko.com,布布扣

    3. 定义spider

    bubuko.com,布布扣

    注意:

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

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

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

    4. 启动spider

        scrapy crawl dmoz

 

数据解析

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

    以搜狗微信为例:

    1. 获取微信文章列表

    bubuko.com,布布扣

    bubuko.com,布布扣

    这样就匹配了所有列表

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

    bubuko.com,布布扣

    获取标题

    bubuko.com,布布扣

    bubuko.com,布布扣

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

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

    如何自动翻页?

    1. 找到下一页链接

bubuko.com,布布扣

    2. 把链接解析出来

    bubuko.com,布布扣

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

 

数据存储

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

    1. 定义数据库链接对象

    bubuko.com,布布扣

    指定数据库为NewsDB

    2. 写入数据

    bubuko.com,布布扣


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

        bubuko.com,布布扣

        3. 使用XPath解析列表

        bubuko.com,布布扣

 

总结:

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

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

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

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

本文出自 “0100” 博客,请务必保留此出处http://8936377.blog.51cto.com/8926377/1570937

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!