您的位置:首页 > 移动开发 > 微信开发

Scrapy抓取微信demo

2014-11-02 16:48 127 查看
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. 定义解析对象



3. 定义spider



注意:
1. 需要指定spider的name属性并且是唯一的,用来标识当前spider
2. 定义爬虫的入口 start_urls 可以是一个或多个
3. parse()方法是每个start_url的响应回调
4. 启动spider
scrapy crawl dmoz

数据解析
数据解析可以使用正则或XPath,可以在parse方法中对response对象进行解析
以搜狗微信为例:
1. 获取微信文章列表






这样就匹配了所有列表
2. 从列表中解析每条微信的标题,链接,公众号,发布时间等属性



获取标题






从HTML结构来看,标题文字是包含在<h4><a>标题</h4>中,所以使用“h4/a”获取a标签
因为其中包含<em>标签,这里做了去除操作,使用正则把标签都去掉了
如何自动翻页?
1. 找到下一页链接



2. 把链接解析出来



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

数据存储
在Scrapy框架中,有pipeline模块专门做数据存储,只需简单定义即可
1. 定义数据库链接对象



指定数据库为NewsDB
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



3. 使用XPath解析列表




总结:
1. Scrapy是一个异步的爬虫框架,只需做好数据解析就相当于完成了一个spider
2. 在将抓取到的数据保存为文件时,默认会显示成unicode,需要借助工具转换为中文,但保存到数据库时不需要做处理
3. 在parse()方法中可以设置休眠时间用来控制抓取频率
4. 在setting.py中设置user-agent用来模拟浏览器
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  demo Scrapy